Heim > Backend-Entwicklung > PHP-Tutorial > Kann die gemeinsame Tabellenabfrage von Yii2 nicht einzelne Felder überprüfen?

Kann die gemeinsame Tabellenabfrage von Yii2 nicht einzelne Felder überprüfen?

PHP中文网
Freigeben: 2023-03-01 06:18:01
Original
2303 Leute haben es durchsucht

Wenn Tabellen nicht verbunden sind, können einzelne Felder überprüft werden.

$user->find()->select(['userid', 'username'])->asArray()->all();
Nach dem Login kopieren
Nach dem Login kopieren

Dann ist SQL auch normal

select userid, username from ...
Nach dem Login kopieren
Nach dem Login kopieren

Aber beim Zusammenführen von Tabellen. . .

$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();
Nach dem Login kopieren
Nach dem Login kopieren

Ich habe mir die SQL-Abfrage angesehen und es stellte sich heraus, dass

select * from ....
Nach dem Login kopieren
Nach dem Login kopieren

Was ist das? Oder stimmt etwas mit der von mir verwendeten Methode nicht? ?

Antwortinhalt:

Wenn Tabellen nicht verbunden sind, können einzelne Felder überprüft werden.

$user->find()->select(['userid', 'username'])->asArray()->all();
Nach dem Login kopieren
Nach dem Login kopieren

Dann ist SQL auch normal

select userid, username from ...
Nach dem Login kopieren
Nach dem Login kopieren

Aber beim Zusammenführen von Tabellen. . .

$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();
Nach dem Login kopieren
Nach dem Login kopieren

Ich habe mir die SQL-Abfrage angesehen und es stellte sich heraus, dass

select * from ....
Nach dem Login kopieren
Nach dem Login kopieren

Was ist das? Oder stimmt etwas mit der von mir verwendeten Methode nicht? ?

Sie sollten „select“ außerhalb von „joinWith“ schreiben:

$user->find()->select(['account_name', 'account_level', 'account_status', 'bank_name', 
'bank_province', 'bank_branch', 'bank_account'])
->joinWith(['account', 'bank'])
->asArray()
->all();
Nach dem Login kopieren

Natürlich wird es select * sein, da Ihre Operation nur das Auswahlfeld angibt, wenn die zugehörige Tabelle abgefragt wird.

Geben Sie also einfach die Auswahl an, wie Sie es einzeln getan haben

Das Obige ist, dass die gemeinsame Tabellenabfrage von Yii2 nicht einzelne Felder überprüfen kann? Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage