Ich möchte Inner Join für mehrere Zeilen verwenden.Innerer Join für mehrere Zeilen
Ich habe eine Tabelle Company
, die OneToMany Beziehung mit Market
Tabelle hat.
class Company
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToMany(targetEntity="Market",cascade={"persist"})
* @ORM\JoinTable(name="companys_markets",
* joinColumns={@ORM\JoinColumn(name="company_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="market_id", referencedColumnName="id")}
* )
*/
private $markets;
class Market
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string",nullable=false,unique=true)
*/
private $name;
Wenn diese beiden Klassen gesetzt, macht Lehre drei Tabellen automatisch.
Und ich setze Daten wie diese unten, diese Company A
gehören zu IT
, Trans
. Company B
zu Finance
gehören, Comapny C
-It
gehören, Trans
Company Table
id bane
1 A
2 B
3 C
companys_markets Table
company_id sector_id
1 1
1 2
2 3
3 1
3 2
Sector Table
Id name
1 IT
2 Trans
3 Finance
In diesem Fall will, was ich ist wie diese haben, jede Kombination von Companys und Branchen
A 1
A 2
B 3
C 1
C 2
Wenn diese Beziehung Schiff OneToOne ist Ich könnte so mit inner join
bekommen, aber in diesem Fall c.markets sind mehrere, so dass es nicht funktioniert.
$this->em->createQuery(
"SELECT c.name,c.code,m.name as marketName FROM UserBundle:Company c
Inner join UserBundle:Market m with m.id = c.markets where c.enabled = true")->getResult()
Also wie kann ich diese Ergebnisse bekommen ??
Was stimmt nicht mit dem Ergebnis? – Eric
Das Ergebnis ist ein ideales Ergebnis. Ich würde gerne wissen, wie ich das bekomme. @Eric – whitebear