结果转换数组
查询后将对象转为数组
传参
toArray和toRawArray传参一致
参数名 | 参数说明 |
---|---|
notNull | 是否过滤空,bool类型 默认false ,当为true时,只返回非空字段 |
strict | 严格模式,bool类型 默认true ,当为true时,只返回当前模型对应数据表的字段,其他field别名等不返回。 |
示例
经过获取器
$model = Model::create()->get(1);
$array = $model->toArray();
$model = Model::create()->all();
foreach($model as $one){
var_dump($one->toArray());
}
不经过获取器
$model = Model::create()->get(1);
$array = $model->toRawArray();
$model = Model::create()->all();
foreach($model as $one){
var_dump($one->toRawArray());
}
筛选
orm > 1.4.4
在调用toArray或toRawArray之前。可以通过调用field()
和hidden()
方法进行返回数据的筛选
两个方法的传参为array|string
,string代表只过滤一个字段
$field = $model->field(['user_list'])->toArray(false, false); // 返回的数组里只有user_list一个元素
$hidden = $model->hidden('user_list')->toArray(false, false); // 返回的数组里过滤了user_list元素
追加
追加非模型字段的属性,必须设置获取器。
\EasySwoole\ORM\Tests\models\TestUserListModel::create()->all()->append(['append_one'])->toArray();
显示
显示指定字段。
\EasySwoole\ORM\Tests\models\TestUserModel::create()->all()->visible(['username','password'])->toArray();
隐藏
隐藏指定字段。
\EasySwoole\ORM\Tests\models\TestUserModel::create()->all()->hidden(['password'])->toArray();
注意事项
模型层all
方法,默认是不返回Collection
的,需要通过foreach
进行:
$results = \EasySwoole\ORM\Tests\models\TestUserModel::create()->all();
/** @var \EasySwoole\ORM\AbstractModel $result */
foreach($results as $result) {
$result->toArray();
}
可以通过配置项returnCollection进行配置,即可快速调用:
\EasySwoole\ORM\Tests\models\TestUserModel::create()->all()->toArray();
get方法不受此配置项影响。
如果不想修改此配置项,兼容以前代码可以通过以下代码快速实现toArray
.
$ret = \EasySwoole\ORM\Tests\models\TestUserModel::create()->all();
if (!$ret instanceof \EasySwoole\ORM\Collection\Collection) {
$ret = new \EasySwoole\ORM\Collection\Collection($ret);
}
$ret->toArray();
以上代码自己去做封装.
当前内容版权归 EasySwoole 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 EasySwoole .