【问题标题】:Accessing Elements In Doctrine Query Not Working访问 Doctrine 查询中的元素不起作用
【发布时间】:2014-02-03 17:23:12
【问题描述】:

我有一个 Doctrine 查询,其中“JOIN p.product pr”正在加入产品表及其所有信息(id、名称、数量、状态、创建、更新、deletedAt 等...)

我的存储库类中的自定义函数...

 $query = $this->getEntityManager()
        ->createQuery('
        SELECT      p
        FROM        WIC\PurchaseOrderBundle\Entity\PurchaseOrderProductsStatus p
        JOIN        p.product pr
        WHERE       p.inventoryLocation = :id
        AND         p.account = :account_id')
        ->setParameter('id', $id)
        ->setParameter('account_id', $account_id);

    try{
        return $query->getArrayResult();
    }catch (\Doctrine\ORM\NoResultException $e) {
        return $e;
    }

在我的控制器中,我将数组发送到树枝模板中...

 $productActions = My custom function query listed above which returns array

 return array(
        'heading' => 'Inventory Staging Location',
        'productActions' => $productActions,
    );

在我的 Twig 模板中,我现在正尝试遍历记录...

 {% for productAction in productActions %}
                        <tr>
                            <td>{{ productAction.product.sku }}</td>
                            <td>{{ productAction.product.name }}</td>
                            <td></td>
                        </tr>
                    {% endfor %}

我收到此错误...

 Key "product" for array with keys "id, qty, status, created, updated, deletedAt" does not exist in ...

我做错了什么?

当我通过执行 ->findBy() 进行查询时,一切似乎都正常。 这个数组在发送到树枝模板时起作用

 $productActions = $em->getRepository('WICPurchaseOrderBundle:PurchaseOrderProductsStatus')->findBy(array(
            "inventoryLocation"=>$inventoryLocation,
            "account"=>$account_id,
        )); 

谢谢!

【问题讨论】:

    标签: php mysql sql symfony doctrine-orm


    【解决方案1】:

    您需要在 SELECT 部分请求 pr ;)

    $query = $this->getEntityManager()
            ->createQuery('
            SELECT      p, pr
            FROM        WIC\PurchaseOrderBundle\Entity\PurchaseOrderProductsStatus p
            JOIN        p.product pr
            WHERE       p.inventoryLocation = :id
            AND         p.account = :account_id')
            ->setParameter('id', $id)
            ->setParameter('account_id', $account_id);
    
        try{
            return $query->getArrayResult();
        }catch (\Doctrine\ORM\NoResultException $e) {
            return $e;
        }
    

    【讨论】:

    • 大声笑,总是有点像这样的事情:)谢谢你的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多