尝试使用Symfony 2获取相关表时出错

时间:2014-03-10 17:38:41

标签: php symfony orm doctrine

$em = $this->getDoctrine()->getManager();
$products = $em->getRepository('NameDemoBundle:Product')->findAllOrderedByName($id);

存储库中的功能:

public function findAllOrderedByName($name)
{
    return $this->getEntityManager()
        ->createQuery(
            'SELECT p,c FROM NameDemoBundle:Product p JOIN p.category c WHERE p.price = :name ORDER BY p.name ASC'
        )
        ->setParameter('name', $name)
        ->getResult()
    ;
}

代码工作正常,但我想进入与结果相关的类别。

当我使用getSingleResult()代替getResult()时,此代码:

$category = $products->getCategory()->getName();

工作正常,但在getResults我有多个结果时出现错误:

 Call to a member function getCategory() on a non-object

有人可以解释一下原因吗?

2 个答案:

答案 0 :(得分:0)

getResult返回一个对象数组,即使你只有一个结果,所以你首先必须解析$ products来获得这样的每个$ product对象

    foreach ( $products as $product )
    {

          $product->getcategory()->getName();
     }

希望这会有所帮助:)

答案 1 :(得分:0)

好吧,我有它

$category = array();
foreach ($products as $product)
{

            $category[] = $product->getcategory()->getName();
}

现在仍然在主题中我必须弄清楚

{% for product in product %}
            <li>{{ product.description }} | {{ product.id }} | {{category??}}</li>
{% endfor %}