时间:2021-07-01 10:21:17 帮助过:19人阅读
- $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.gxlcms.com)!