Kiri Sertai dalam Doktrin: Bagaimana untuk Mengelakkan Ralat Sintaks dan Mendapatkan Hasil yang Dijangkakan?

Barbara Streisand
Lepaskan: 2024-10-28 03:26:31
asal
182 orang telah melayarinya

Left Join in Doctrine: How to Avoid Syntax Errors and Get the Expected Results?

Cara Melaksanakan Gabungan Kiri dalam Doktrin: Menangani Ralat Sintaks dan Hasil Yang Tidak Dijangka

Dalam Doktrin, gabungan kiri membolehkan anda mendapatkan semula data daripada dua atau lebih jadual manakala pilihan termasuk baris dari jadual kiri walaupun tiada baris yang sepadan dalam jadual kanan. Untuk melakukan gabungan kiri, anda boleh menggunakan kaedah leftJoin.

Walau bagaimanapun, anda mungkin menghadapi beberapa masalah semasa melakukan gabungan kiri. Mari kita atasi isu biasa dan berikan penyelesaian.

Isu:
"Ralat Sintaks: Doktrin yang DiharapkanORMQueryLexer::T_WITH, mendapat 'ON'

Penjelasan:
Dalam kod asal anda, anda menggunakan 'ON' dan bukannya 'WITH' dalam kaedah leftJoin Sintaks yang betul untuk gabungan kiri ialah:

$qb->leftJoin('User\Entity\User', 'u', \Doctrine\ORM\Query\Expr\Join::WITH, 'a.user = u.id')
Salin selepas log masuk

Dikemas kini. Kod:
Menggantikan 'ON' dengan 'WITH' dalam kod di atas akan menyelesaikan ralat sintaks.

Isu Lain:
"Hanya 1 nilai daripada lajur bercantum sedang dipaparkan."

Penjelasan:
Jika anda mempunyai perkaitan yang ditentukan antara jadual (CreditEntityUserCreditHistory#user dalam contoh anda), anda boleh menggunakan versi ringkas bagi join kiri:

$qb->leftJoin('a.user', 'u')
Salin selepas log masuk

Ini akan melakukan gabungan kiri secara automatik berdasarkan perkaitan Jika tiada perkaitan ditakrifkan, anda boleh menggunakan sintaks yang lebih jelas:

$qb->leftJoin(
    'User\Entity\User',
    'u',
    \Doctrine\ORM\Query\Expr\Join::WITH,
    'a.user = u.id'
)
Salin selepas log masuk

Keputusan:
Caburan kiri akan menghasilkan set hasil yang merangkumi baris daripada kedua-dua jadual, dengan padanan pilihan daripada jadual kanan Hasilnya akan dikembalikan sebagai tatasusunan, di mana setiap elemen ialah tatasusunan entiti.

array(
    array(
        0 => UserCreditHistory instance,
        1 => User instance
    ),
    array(
        0 => UserCreditHistory instance,
        1 => User instance
    ),
    // ...
)
Salin selepas log masuk

Atas ialah kandungan terperinci Kiri Sertai dalam Doktrin: Bagaimana untuk Mengelakkan Ralat Sintaks dan Mendapatkan Hasil yang Dijangkakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!