Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara kerja gabungan batin pada hubungan banyak-ke-banyak menggunakan Doctrine dan Symfony2

Menggunakan ManyToMany antara 2 entitas melibatkan tabel ketiga yang umumnya disebut sebagai tabel persimpangan dalam jenis relasi ini ketika Anda membangun doktrin DQL (doktrin kueri) secara otomatis bergabung dengan tabel persimpangan tergantung pada sifat relasi yang telah Anda definisikan sebagai anotasi jadi pertimbangkan kueri Anda

$teamsingroup = $em->getRepository("AppBundle\Model\Entity\Team")
                    ->createQueryBuilder('o')
                    ->innerJoin('o.group', 't')

Anda bergabung dengan Team entitas dengan Group entitas di innerJoin('o.group') bagian o adalah alias untuk entitas Tim dan o.group mengacu pada properti yang didefinisikan dalam Team entitas bernama group .

/**
 * @ORM\ManyToMany(targetEntity="Groups", mappedBy="team")
 */
protected $group;

Yang memiliki ManyToMany anotasi yang ditentukan untuk jenis doktrin relasi ini menggabungkan tabel tim Anda terlebih dahulu dengan tabel persimpangan dan kemudian menggabungkan tabel persimpangan Anda dengan tabel grup dan SQL yang dihasilkan akan menjadi seperti

SELECT t.*
FROM teams t
INNER JOIN junction_table jt ON(t.id = jt.team_id)
INNER JOIN groups g ON(g.id = jt.group_id)
WHERE g.id = @group_id

Hal lain terkait cara Anda mendapatkan tim untuk setiap grup, Anda dapat meminimalkan kode Anda dengan mengecualikan createQueryBuilder bagian dalam loop, setelah Anda mendefinisikan properti tim sebagai ArrayCollection yaitu $this->team = new ArrayCollection(); pada setiap objek grup Anda akan mendapatkan kumpulan tim yang terkait dengan grup tertentu dengan memanggil getTeam() fungsi pada objek grup mirip dengan kode di bawah ini.

foreach ($groups as $group) {
    $teamsingroup = $group->getTeam();
    echo "</b>".$group->getGroupname()."</b></br>";
    foreach ($teamsingroup as $teamingroup) {
        echo $teamingroup->getTeam()."</br>";
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Melewati Daftar String di Prosedur Tersimpan MySQL?

  2. Cara Menginstal MySQL Workbench Di Windows

  3. Apakah MySQL Regexp mendukung pencocokan Unicode?

  4. AccountController menggunakan MySQL di ASP.NET MVC

  5. Python Terhubung Ke Database MySQL Dengan Konektor MySQL &Contoh PyMySQL