Rumah >pembangunan bahagian belakang >tutorial php >Kiri Sertai dalam Doktrin: Bagaimana untuk Mengelakkan Ralat Sintaks dan Mendapatkan Hasil yang Dijangkakan?

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

Barbara Streisand
Barbara Streisandasal
2024-10-28 03:26:31290semak imbas

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')

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')

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'
)

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
    ),
    // ...
)

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!

Kenyataan:
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