當不聯表時,可以查個別欄位。
$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聯表查詢不能查個別欄位?的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!