我有這樣的實體:如何使用jointable創建一個dql查詢?
-entity Frase:
/**
* Frase
*
* @Entity
* @Table(name="frase") })
*
*/
class Frase {
/**
* @var int
*
* @Id
* @GeneratedValue
* @Column(type="integer")
*/
private $id;
/**
* @var String
*
*@Column(type="string", length=200, name="texto")
*/
private $text;
/**
* @var Autor
*
* @ManyToOne(targetEntity="Autor", inversedBy="frases")
*/
private $autor;
/**
* @var Tema[]
*
* @ManyToMany(targetEntity="Tema", inversedBy="frases",
* fetch="EAGER", cascade={"persist"}, orphanRemoval=true
*)
* @JoinTable(
* name="tema_frase",
* inverseJoinColumns={ @JoinColumn(name="tema_id", referencedColumnName="tema_id") }
*)
*/
private $tema;
...
/**
* Tema
*
* @Entity
* @Table(name="tema") })
*
*/
-entity特馬:
class Tema {
/**
* @var int
*
* @Id
* @GeneratedValue
* @Column(type="integer", name="tema_id")
*/
private $id;
/**
* @var string
*
* @Column(type="string", length=50, name="nombre", unique=true)
*/
private $nombre;
/**
* @var Frase[]
*
* @ManyToMany(targetEntity="Frase", mappedBy="tema")
*/
private $frases;
我需要做一個這樣的查詢中DQL:
SELECT DISTINCT(tema.nombre) as Tema, count(frase.texto)AS 'Nº Frases' FROM tema_frase RIGHT JOIN tema ON tema_frase.tema_id=tema.tema_id LEFT JOIN frase ON frase.id=tema_frase.frase_id GROUP BY tema.nombre
但是在dql中的問題是我無法訪問創建datab的原則表ase叫做「tema_frase」來做這個查詢。
所以,我怎樣才能使DQL此查詢,如果我需要tema_frase?
對不起,我不理解你。什麼包含變量$ tema_frase? –
您不指定存儲表的數據庫...所以$ tema_frase_db表示該表的數據庫,$ frase_db表示該表的數據庫。完全限定表名允許您在默認數據庫之外引用表。用實際的數據庫名稱替換變量。 – RMathis