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

PHP中文网
リリース: 2023-03-01 06:18:01
オリジナル
2277 人が閲覧しました

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

$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) に注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート