结果转换数组

查询后将对象转为数组

传参

toArray和toRawArray传参一致

参数名参数说明
notNull是否过滤空,bool类型 默认false,当为true时,只返回非空字段
strict严格模式,bool类型 默认true,当为true时,只返回当前模型对应数据表的字段,其他field别名等不返回。

示例

经过获取器

  1. $model = Model::create()->get(1);
  2. $array = $model->toArray();
  3. $model = Model::create()->all();
  4. foreach($model as $one){
  5. var_dump($one->toArray());
  6. }

不经过获取器

  1. $model = Model::create()->get(1);
  2. $array = $model->toRawArray();
  3. $model = Model::create()->all();
  4. foreach($model as $one){
  5. var_dump($one->toRawArray());
  6. }

筛选

orm > 1.4.4

在调用toArray或toRawArray之前。可以通过调用field()hidden()方法进行返回数据的筛选

两个方法的传参为array|string,string代表只过滤一个字段

  1. $field = $model->field(['user_list'])->toArray(false, false); // 返回的数组里只有user_list一个元素
  2. $hidden = $model->hidden('user_list')->toArray(false, false); // 返回的数组里过滤了user_list元素

追加

追加非模型字段的属性,必须设置获取器。

  1. \EasySwoole\ORM\Tests\models\TestUserListModel::create()->all()->append(['append_one'])->toArray();

显示

显示指定字段。

  1. \EasySwoole\ORM\Tests\models\TestUserModel::create()->all()->visible(['username','password'])->toArray();

隐藏

隐藏指定字段。

  1. \EasySwoole\ORM\Tests\models\TestUserModel::create()->all()->hidden(['password'])->toArray();

注意事项

模型层all方法,默认是不返回Collection的,需要通过foreach进行:

  1. $results = \EasySwoole\ORM\Tests\models\TestUserModel::create()->all();
  2. /** @var \EasySwoole\ORM\AbstractModel $result */
  3. foreach($results as $result) {
  4. $result->toArray();
  5. }

可以通过配置项returnCollection进行配置,即可快速调用:

  1. \EasySwoole\ORM\Tests\models\TestUserModel::create()->all()->toArray();

get方法不受此配置项影响。

如果不想修改此配置项,兼容以前代码可以通过以下代码快速实现toArray.

  1. $ret = \EasySwoole\ORM\Tests\models\TestUserModel::create()->all();
  2. if (!$ret instanceof \EasySwoole\ORM\Collection\Collection) {
  3. $ret = new \EasySwoole\ORM\Collection\Collection($ret);
  4. }
  5. $ret->toArray();

以上代码自己去做封装.