Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 尝试使用Symfony 2获取相关表时出错_Php_Symfony_Orm_Doctrine - Fatal编程技术网

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

Php 尝试使用Symfony 2获取相关表时出错,php,symfony,orm,doctrine,Php,Symfony,Orm,Doctrine,存储库中的功能: $em = $this->getDoctrine()->getManager(); $products = $em->getRepository('NameDemoBundle:Product')->findAllOrderedByName($id); 代码工作正常,但我想进入与结果相关的类别 当我使用getSingleResult()而不是getResult()时,此代码: public function findAllOrderedByName($

存储库中的功能:

$em = $this->getDoctrine()->getManager();
$products = $em->getRepository('NameDemoBundle:Product')->findAllOrderedByName($id);
代码工作正常,但我想进入与结果相关的类别

当我使用
getSingleResult()
而不是
getResult()
时,此代码:

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()
    ;
}
工作正常,但在
getResults
上,当我有多个结果时,会出现错误:

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

有人能解释一下原因吗?

getResult返回一个对象数组,即使您只有一个结果,所以您首先必须解析$products以获得每个$product对象,如下所示

 Call to a member function getCategory() on a non-object
希望这会有帮助:)

好的,我有了

    foreach ( $products as $product )
    {

          $product->getcategory()->getName();
     }
现在仍然是我必须弄清楚的主题

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

            $category[] = $product->getcategory()->getName();
}
{%用于产品%中的产品]
  • {{product.description}}{{product.id}}{{category???}}
  • {%endfor%}
    这对你有用还是需要更多帮助?你不应该发布多个答案,这很让人困惑。请尝试编辑您的答案。{{product.category.name}您可以像arrayye一样访问产品的所有相关对象。如果有人需要{{category[loop.index0]},我会这样做。}简单快速地感谢您的帮助,所以您应该选择好的答案,将您的问题标记为已回答,这对社区很有用!
    {% for product in product %}
                <li>{{ product.description }} | {{ product.id }} | {{category??}}</li>
    {% endfor %}