【问题标题】:Error when trying to get related table using Symfony 2尝试使用 Symfony 2 获取相关表时出错
【发布时间】:2014-03-10 17:38:40
【问题描述】:
$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

谁能解释一下原因?

【问题讨论】:

  • 这对您有用还是您需要更多帮助?
  • 您不应该发布多个答案,这会造成混淆。请尝试编辑您的答案。

标签: php symfony orm doctrine


【解决方案1】:

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

    foreach ( $products as $product )
    {

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

希望这会有所帮助:)

【讨论】:

    【解决方案2】:

    好的,我知道了

    $category = array();
    foreach ($products as $product)
    {
    
                $category[] = $product->getcategory()->getName();
    }
    

    现在我必须弄清楚主题内部

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

    【讨论】:

    • {{ product.category.name }} 您可以像数组一样访问产品的所有相关对象
    • 所以您应该通过选择好的答案将您的问题标记为已回答,这对社区很有用!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 2012-09-07
    • 1970-01-01
    • 2017-05-06
    • 2022-01-05
    • 2021-02-10
    相关资源
    最近更新 更多