显示实体相关的ManyToOne时出现Symfony2错误

时间:2014-06-09 20:36:43

标签: php symfony doctrine relation many-to-one

我正在尝试在activite.html树枝页面中显示“CategorieActivite”。

我有2个实体。第一个是Activite。第二个是CategorieActivite。

我在Activite中添加了注释。 我已经在ActiviteRepository中加入了我的查询。 在我的数据库(外键)中没问题。

但我收到此错误: 对象“AssoFranceRussie \ MainBundle \ Entity \ Activite”的方法“CategorieActivite”不存在于(在我的枝条页面中)

我是否必须做其他事情才能从其他实体获取某些实体数据? 谢谢 EB

代码:

class Activite
{

    // $categorieActiviteId lié à l'entité CategorieActivite
    // ManyToOne
    /**
     * @ORM\ManyToOne(targetEntity="AssoFranceRussie\MainBundle\Entity\CategorieActivite")
     * @ORM\JoinColumn(name="categorie_activite_id", referencedColumnName="id")
     */
    private $categorieActiviteId;   

...
}

ActiviteRepository:

public function getAllActivites()
    {
    $query = $this->getEntityManager()->createQuery(
      'SELECT a,c,n 
        FROM AssoFranceRussieMainBundle:Activite a 
        JOIN a.categorieActiviteId c 
        JOIN a.niveauActiviteId n 
        ORDER BY a.nom ASC '
        );   


    return $query->getResult();

    }

在twig html中:

<p><strong>{{activite.CategorieActivite.libelle}}</strong></p>

2 个答案:

答案 0 :(得分:1)

您应该为$ categorieActiviteId属性创建getter。 所以在Activite课程中你应该有

public function getCategorieActivite() {
    return $this->categorieActiviteId;
}

在树枝上你应该:

<p><strong>{{activite.getCategorieActivite.libelle}}</strong></p>

不要忘记libelle必须是公共方法或属性

答案 1 :(得分:0)

感谢您的帮助。它现在有效。 实际上我已经在Activite类中使用了带注释的getter。所以,我应该用twig {{activite.categorieActiviteId.libelle}}而不是{{activite.categorieActivite.libelle}}来写。访问数据工作的两种方法。

Activite类中的getter:

/**
 * Get categorieActiviteId
 *
 * @return \AssoFranceRussie\MainBundle\Entity\CategorieActivite 
 */
public function getCategorieActiviteId()
{
    return $this->categorieActiviteId;
}