ホームページ >バックエンド開発 >PHPチュートリアル >Yii2 ジョイント テーブル クエリでは個々のフィールドをチェックできませんか?

Yii2 ジョイント テーブル クエリでは個々のフィールドをチェックできませんか?

PHP中文网
PHP中文网オリジナル
2017-03-30 13:41:522305ブラウズ

テーブルが接続されていない場合、個々のフィールドを確認できます。

$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 ....

詐欺だったことが判明しました。それとも、私が使用している方法に何か問題があるのでしょうか? ?

joinWith の外側に select を書く必要があります:

$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 中国語 Web サイト (www.php.cn) に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。