在Symfony 2中加入查询

时间:2016-06-01 13:06:08

标签: php mysql sql symfony

我是Symfony的新人,我有2个实体(不是我创建的实体):

  • 第一个实体:test1(id,test2_id)
  • 第二个实体:test2(id,label)

我想创建一个从test // Probably somewhere at the beginning of the class as a private global field private Dictionary<string, int> _partOfSpeechDict; public yourClassConstructor() { _partOfSpeechDict = new Dictionar<string, int>(); _partOfSpeechDict.Add("noun", 1); _partOfSpeechDict.Add("verb", 2); _partOfSpeechDict.Add("adjective", 3); _partOfSpeechDict.Add("adverb", 4); } int getPos(string partOfSpeech) { var pos = 5; // For 'other' or default in your case if (_partOfSpeechDict.ContainsKey(partOfSpeech)) { pos = _partOfSpeechDict[partOfSpeech]; } return pos; } 中选择的查询。

test2.label = 1

但我收到了一个错误:

  

Bundle \ Entity \ test1没有名为test2的关联

是否有解决方案或其他方法使其发挥作用。

2 个答案:

答案 0 :(得分:1)

试试这个:

$Websites = $this->_em
->createQuery("
    SELECT w
    FROM \Bundle\Entity\test1 t1
    JOIN \Bundle\Entity\test2 t2
    WHERE t2.id = t1.test2_id AND t2.label=1")
->getResult();

您还可以使用createQueryBuilder方法

答案 1 :(得分:0)

使用 createQueryBuilder ,您可以使用以下

$labelValue = 1;

/* Get the EntityManager Resource */
$em = $this->getDoctrine->getManager();

$em->getRepository('AppBundle:test1')
   ->createQueryBuilder('t1')
   ->select('t1.w') /*Here you can select respective table columns */
   ->innerJoin('t1.test2_id', 't2')
   ->where('t2.label = :label') /* if label value coming from external value else ->where('t2.label = 1') and omit next line */
   ->setParameter('label',$labelValue) /*In case if your label value coming for external value */
   ->getQuery()
   ->getResult();