Melaksanakan Left Joins in Doctrine
Doktrin menyediakan keupayaan menyeluruh untuk mencipta dan melaksanakan pertanyaan SQL, termasuk keupayaan untuk melaksanakan gabungan kiri. Artikel ini menunjukkan cara melakukan gabungan kiri menggunakan Doktrin, menangani titik kesakitan yang mungkin anda hadapi dalam kod anda.
Sintaks Sertai Kiri
Apabila menggunakan perkaitan antara entiti, sintaks untuk cantuman kiri adalah mudah:
<code class="php">public function getHistory($users) { $qb = $this->entityManager->createQueryBuilder(); $qb ->select('a', 'u') ->from('Credit\Entity\UserCreditHistory', 'a') ->leftJoin('a.user', 'u') ->where('u = :user') ->setParameter('user', $users) ->orderBy('a.created_at', 'DESC'); return $qb->getQuery()->getResult(); }</code>
Dalam contoh ini, syarat digunakan pada hasil cantuman, menjadikannya tidak relevan sama ada cantuman kiri atau sekadar cantuman digunakan.
Kiri Sertai Tanpa Persatuan
Jika tiada persatuan tersedia, pertanyaan penyertaan kiri menyerupai berikut:
<code class="php">public function getHistory($users) { $qb = $this->entityManager->createQueryBuilder(); $qb ->select('a', 'u') ->from('Credit\Entity\UserCreditHistory', 'a') ->leftJoin( 'User\Entity\User', 'u', \Doctrine\ORM\Query\Expr\Join::WITH, 'a.user = u.id' ) ->where('u = :user') ->setParameter('user', $users) ->orderBy('a.created_at', 'DESC'); return $qb->getQuery()->getResult(); }</code>
Pertanyaan ini menghasilkan tatasusunan yang serupa dengan yang berikut:
<code class="php">array( array( 0 => UserCreditHistory instance, 1 => Userinstance, ), array( 0 => UserCreditHistory instance, 1 => Userinstance, ), // ... )</code>
Atas ialah kandungan terperinci Cara Melakukan Gabungan Kiri dalam Doktrin: Panduan dengan Contoh Kod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!