sql >> Database teknologi >  >> RDS >> Mysql

Hvordan virker indre forening på et mange-til-mange forhold ved hjælp af Doctrine og Symfony2

Brug af ManyToMany mellem 2 entiteter involverer en tredje tabel, der generelt kaldes en forbindelsestabel i denne type relation, når du bygger en DQL (doktrinforespørgsel) doktrin forbinder automatisk forbindelsestabel afhængigt af arten af ​​relationen, du har defineret som annotering, så i betragtning af din forespørgsel

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

Du tilslutter dig Team enhed med Group enhed i innerJoin('o.group') del o er alias for Team-entitet og o.group henviser til egenskab defineret i Team enhed navngivet som group .

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

Som har en ManyToMany annotation defineret for denne type relationsdoktrin forbinder din teamtabel først med junction-tabel og forbinder derefter din junction-tabel med gruppetabel, og den resulterende SQL vil være noget lignende

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

En anden ting relateret til din måde at få team til hver gruppe, du kan minimere din kode ved at ekskludere createQueryBuilder del i loop, når du har defineret teams egenskab som ArrayCollection dvs. $this->team = new ArrayCollection(); på hvert gruppeobjekt vil du få samlinger af teams knyttet til den pågældende gruppe ved at kalde getTeam() funktion på gruppeobjekt svarende til nedenstående kode.

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


  1. Direkte adgang til en SQL Server-database i Xamarin.Forms

  2. ABS() Funktion i Oracle

  3. laravel returnerer json-streng på lokal maskine, men heltal på elastisk beanstalk-forekomst

  4. Doktrin og sammensatte unikke nøgler