当不联表时,可以查个别字段。
$user->find()->select(['userid', 'username'])->asArray()->all();
然后SQL也很正常
select userid, username from ...
但联表时。。。
$user->find() ->joinWith([ 'account' => function ($object) { $object->select(['account_name', 'account_level', 'account_status']); }, 'bank' => function ($object) { $object->select(['bank_name', 'bank_province', 'bank_branch', 'bank_account']); } ]) ->asArray() ->all();
我看了下查询SQL居然是
select * from ....
坑爹呢这是?还是是我用的方法有问题??
当不联表时,可以查个别字段。
$user->find()->select(['userid', 'username'])->asArray()->all();
然后SQL也很正常
select userid, username from ...
但联表时。。。
$user->find() ->joinWith([ 'account' => function ($object) { $object->select(['account_name', 'account_level', 'account_status']); }, 'bank' => function ($object) { $object->select(['bank_name', 'bank_province', 'bank_branch', 'bank_account']); } ]) ->asArray() ->all();
我看了下查询SQL居然是
select * from ....
坑爹呢这是?还是是我用的方法有问题??
你应该把select写在joinWith外面:
$user->find()->select(['account_name', 'account_level', 'account_status', 'bank_name', 'bank_province', 'bank_branch', 'bank_account']) ->joinWith(['account', 'bank']) ->asArray() ->all();
当然会是 select *
因为你的操作只是在限定了查询关联表的时候会指定select字段.
所以还是向你单个的那样,指定select就好
以上就是Yii2联表查询不能查个别字段?的内容,更多相关内容请关注PHP中文网(www.php.cn)!