使用 SuiteCRM Beans 模型

主要观点:SuiteCRM 的 MVC 架构中,Beans 是模型,可从数据库获取数据、保存和编辑记录,介绍了多种与 Beans 工作的方式。
关键信息

  • BeanFactory:可动态加载或创建 Bean 实例,如BeanFactory::newBean('<TheModule>')创建新 Bean,BeanFactory::getBean('<TheModule>', $beanId)获取现有 Bean,getBean会缓存 10 个结果。
  • SugarBean:是 SuiteCRM 解决方案中所有 Bean 的父类。
  • 搜索 Beans 的方法

    • get_list:可获取匹配 Bean 的列表并分页,需指定排序$order_by、过滤条件$where、起始行$row_offset、限制数量$limit等参数,返回包含分页信息和 Bean 列表的数组。
    • get_full_list:获取所有匹配 Bean 的列表,参数与get_list类似,区别是$check_dates参数。
    • retrieve_by_string_fields:根据匹配字符串字段检索单个记录,需指定字段数组$fields_array等参数,返回单个 Bean 或 null。
  • 访问字段:通过访问 Bean 的属性获取或设置字段值,更改后需调用save方法保存到数据库,save根据id字段决定是更新还是插入新记录。
  • 相关 Beans

    • get_linked_beans:获取给定记录的相关 Bean 列表,需指定字段名$field_name、Bean 名称$bean_name等参数,返回相关 Bean 数组。
    • 关系相关操作:使用load_relationship加载关系,可通过get获取相关记录 ID,getBeans获取相关 Bean 数组(可能性能较差),add添加相关记录,delete解除相关记录。

    重要细节

  • get_list$order_by可指定多个字段排序,如date_modified, id DESC
  • retrieve_by_string_fields$deleted参数控制是否过滤删除的记录,true表示不包含删除记录。
  • get_linked_beans$field_name不是关系名称,可在cache/modules/<TheModule>/<TheModule>Vardefs.php中查看链接定义。
  • add方法中如果 Bean 可用应使用它以避免重新加载 Bean。
  • delete方法中需传递当前 Bean 的id和相关 Bean 的id或 Bean。
阅读 1
0 条评论