SuiteCRM Beans(model)

SuiteCRM遵循MVC模式,因此也具有模型(M)的概念。
Beans就是SuiteCRM中的模型,它的实现逻辑与咱们平常使用的Model类是一样的,下面我们就来看看SuiteCRM中的Beans是如何使用的。

一、创建bean
1.1如何创建一个新的bean
/**
 * BeanFactory Bean的基类
 * aaaa_A1是我建的一个模块(对应数据表)
 */
$a1Bean = BeanFactory::newBean('aaaa_A1');

就是如此的简单,这样的话,我们就拥有了一个可以操作数据的bean类了。

注:当你在控制器中使用BeanFactory这个工厂类的时候,无需引入,就可以直接使用。它的位置在 /data/BeanFactory.php

1.2如何获取一个指定的bean
/**
 * BeanFactory Bean的基类
 * aaaa_A1是我建的一个模块(对应数据表)
 * 4344b1cb-0c5f-7729-1523-5f30d32687b0 为数据id,这是个可选参数
 */
$a1Bean = BeanFactory::getBean('aaaa_A1', '4344b1cb-0c5f-7729-1523-5f30d32687b0');

上面代码的功能是:创建bean对象的同时,绑定了某条数据,这样就可以直接对该条数据进行任何操作了。
getBean的第二个参数(数据id)是可选的,传了就是绑定了单条数据,如果不传的话,创建出来的就是一个全新的bean,等同于newBean方法。

接下来,就是最激动人心的时刻了…

二、各种猛如虎的操作(CURD)
2.1查询
1、get_list — 列表查询(可分页)
$a1Bean = BeanFactory::newBean('aaaa_A1');
$data = $a1Bean->get_list(
    $order_by = "date_modified DESC", 	// 排序方式
    $where = "modified_user_id = 2", 	// 查询条件
    $row_offset = 0,				 	// 从第几条开始取数据
    $limit = 2,					 		// 返回的最大记录数。-1表示没有限制
    $max = 2,							// 每页最多可返回的条目数。-1表示默认的最大值
    $show_deleted = 0 // 表示是否显示被删除的数据,有三个取值 0(不显示删除数据) 1(只显示删除数据) -1(显示全部),默认为0。
);

get_list方法返回一个数组,包括查询的结果 ,分页等信息。

// 返回的数据格式
Array
(
    [list] => Array()			// 查询结果数据,可直接遍历
    [row_count] => 2			// 结果中的总行数
    [next_offset] => 2			// 下一页的偏移量;如果没有其他页,则为-1。	
    [previous_offset] => 2		// 上一页的偏移量;如果是第一页,则为-1。
    [current_offset] => 0		// 当前结果的偏移量;从0开始
)
2、get_full_list — 列表查询(无分页)

当你不需要数据分页时,可以使用该方法。

$a1Bean = BeanFactory::newBean('aaaa_A1');
$data = $a1Bean->get_full_list(
    $order_by = "date_modified DESC", 			// 排序方式
    $where = "aaaa_A1.modified_user_id = 1", 	// 查询条件
   	$check_dates=false,							// 是否转换时间显示格式,取值 true/false,默认为false
    $show_deleted = 0
);

该方法返回的结果就是一个包含查询结果的二维数组。

3、retrieve_by_string_fields — 查询单条数据
$a1Bean = BeanFactory::newBean('aaaa_A1');
$data= $a1Bean->retrieve_by_string_fields(
	// 查询条件
	$fields_array = array(
		'modified_user_id' => 2,
       	'name' => '测试'
	),
	$encode = true,		// 结果是否应为HTML编码
	$deleted = false	// 是否添加删除的过滤器
);

resolve_by_string_fields返回单个结果集,如果没有匹配结果,则返回null。

2.2新增与更新

SuiteCRM中,新增与更新数据都使用save方法,它是通过检索id字段来区分新增与更新的。

1、新增
$a1Bean = BeanFactory::newBean('aaaa_A1');
$a1Bean->name = '小明';
$a1Bean->description= '测试';
$res = $a1Bean->save();
2、更新
$a1Bean = BeanFactory::newBean('aaaa_A1');
$a1Bean->id= '4344b1cb-0c5f-7729-1523-5f30d32687b0';	// 表中已有的id,若id不存在,则更新失败
$a1Bean->name = '小明';
$a1Bean->description= '测试';
$res = $a1Bean->save();

通过这两段代码我们可以看出,更新比新增多个一行指定id的代码。
当然我们还有另外一种方法,就是getBean,我觉得用它来做更新操作,更适合。

$a1Bean = BeanFactory::getBean('aaaa_A1', '4344b1cb-0c5f-7729-1523-5f30d32687b0');
$a1Bean->name = '测试测试';
$res = $a1Bean->save();
2.3删除

SuiteCRM中,数据删除是逻辑删除,将deleted字段设置为1,即为删除。
SuiteCRM通过mark_deleted方法实现这一功能。

$a1Bean = BeanFactory::newBean('aaaa_A1');
$id = '4344b1cb-0c5f-7729-1523-5f30d32687b0';
$a1Bean->mark_deleted($id);
$res = $a1Bean->save();

和更新一样,我们也可以通过getBean来实现删除。

$a1Bean= BeanFactory::getBean('aaaa_A1', '4344b1cb-0c5f-7729-1523-5f30d32687b0');
$a1Bean->mark_deleted();
$res = $a1Bean->save();
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值