php - Symfony2 Doctrine 自定义查询问题

标签 php mysql sql symfony doctrine-orm

我正在 Symfony2 中使用原则创建自定义查询。无论如何,我遇到的问题是,除非所有连接表中都有记录,否则该脚本不会返回任何结果。即使所有加入的表都没有记录,如何确保可以取回记录。

这是我的代码:

    $em = $this->getDoctrine()->getManager();
    $dql = "    SELECT p, poli, polil, pops, pa
                FROM WIC\PurchaseOrderBundle\Entity\PurchaseOrder p

                JOIN p.purchaseOrderLineItem poli
                  WITH poli.purchaseOrder=p.id

                JOIN poli.purchaseOrderLineItemLocation polil
                  WITH polil.purchaseOrderLineItem=poli.id

                JOIN polil.purchaseOrderProductsStatus pops
                  WITH pops.purchaseOrderLineItemLocation=polil.id

                JOIN pops.putAway pa
                  WITH pa.purchaseOrderProductsStatus=pops.id

                WHERE p.account=:account_id
                AND p.id=:id";
    $query = $em->createQuery($dql);
    $query->setParameters(array(
        'account_id' => $account->getId(),
        'id' => 10488,
    ));
    $purchaseorders = $query->getArrayResult();

计算数组:

 When I do a echo count(purchaseorders) it returns: 0 

打印数组:

 When I do a print_r($purchaseorders) it returns: Array ( )

我认为我至少应该取回数组中的采购订单信息,即使没有行项目、行项目位置、状态或入库记录。

这是我的测试 Twig 模板,错误不在这里,只是想我还是添加它......

{% for purchaseorder in purchaseorders %}
<div class="row-fluid">
    <div class="span12">
        Purchase Order: {{ purchaseorder.id }}
        <div class="row-fluid">
            <div class="span12">
                {% for purchaseorderitems in purchaseorder.purchaseOrderLineItem %}
                    &nbsp;&nbsp;&nbsp;&nbsp; {{ purchaseorderitems.id }}<br>
                    {% for purchaseorderitemLocations in purchaseorderitems.purchaseOrderLineItemLocation %}
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {{ purchaseorderitemLocations.id }}<br>
                        {% for purchaseOrderProductsStatus in purchaseorderitemLocations.purchaseOrderProductsStatus %}
                            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {{ purchaseOrderProductsStatus.id }}<br>
                        {% endfor %}
                    {% endfor %}
                {% endfor %}
            </div>
        </div>
    </div>
</div>
{% endfor %}

现在,我已经添加了新的采购订单,因此该记录确实存在于采购订单表中。

感谢您的帮助!

最佳答案

它应该使用 LEFT JOIN 来代替。只是想通了,我想如果其他人需要的话,我会把答案留在那里。干杯!

关于php - Symfony2 Doctrine 自定义查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21785108/

相关文章:

php - laravel 一对多插入

php - 在 Laravel 5.3 中使用 Codeception 进行验收测试时如何绕过中间件?

php - 如何迭代 mysqli_fetch_all() 方法

mysql - vb.net 更新用户按钮在使用 mysql 时不起作用

sql - 在关系数据库中,您将临时属性存储在哪里?

mysql - 查询多张表,但只得到一张表的结果,不重复

php - 自动加载下拉菜单值

php - 我需要编写相同的 mySQL 查询两次

mysql - 跨多台计算机使用数据库 - Ruby On Rails/MySQL

mysql - 获取不带表格格式的SQL查询结果