Heim  >  Artikel  >  Backend-Entwicklung  >  Yii2联表查询不能查个别字段?

Yii2联表查询不能查个别字段?

PHP中文网
PHP中文网Original
2017-03-30 13:41:522241Durchsuche

当不联表时,可以查个别字段。

$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)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn