有些模型属性在一定的情况下是需要的,另一些情况下是不需要的,怎么处理这种冲突?
正常情况下用模型查询得到的是一个有模型组成的数组,数组中没有办法包含方法,是的某些操作(比如,临时隐藏模型的一些属性)显得非常难以实现。针对这个问题,TP5框架提供了一个将数组转化为数据集的方法:
$collection = collection($products)//变量¥collection是一个数据集,是一个对象,方法collection接收一个数组作为参数,这个方法将这个数组转化为对象,对象下面有一个item属性,属性的值就是这个数组。
数组变量$products转变为数据集(对象)collection后就可以调用对象封装的函数来实现一些功能,比如临时的隐藏一些字段属性:
$products = $collection->hidden(['summary']);
除了这种强制将数组转换为数据集的方式之外,还可以通过设置的方式使得模型查询的结果直接返回对象而不是数组。
在数据库设置文件database.php里面进行如下设置:
'resultset_type' => 'array',改为'resultset_type' => 'collection',
但是进行了这样的修改之后要注意判断为空的会有问题,因为这个数组在对象中是以item属性的值存在的,这个属性值为空,并不会得到对象为空的结论,怎么解决这个问题呢?
这时可以使用TP5框架自带的函数isEmpty()来判断属性值是否为空。
数组形式 if($result) 等效于 对象形式的 if($result->isEmpty())
网友评论