【发布时间】:2014-02-05 19:03:22
【问题描述】:
我有 3 个表要连接在一起,分别是“PurchaseOrderProductsStatus、Product 和 PutAway”表。
PurchaseOrderProducts状态表
id | product_id |
----------------------
10 | 1 |
产品表
id | Name |
---------------------------
1 | Acme Product 123
收起表
id | product_id |
----------------------
100 | 1
101 | 1
我能够将数据输出到屏幕上,我遇到的问题是它只从我的 PutAway 表中返回 1 行。它应该像这样返回 2 行...
Acme Product 123
100 - Acme Product 123
101 - Acme Product 123
这是我的自定义查询。我究竟做错了什么?
$query = $this->getEntityManager()
->createQuery('
SELECT pops, pr, pa
FROM WIC\PurchaseOrderBundle\Entity\PurchaseOrderProductsStatus pops
LEFT JOIN pops.product pr
LEFT JOIN pr.putAway pa
WHERE pops.inventoryLocation = :id
AND pops.account = :account_id
')
->setParameter('id', $id)
->setParameter('account_id', $account_id);
关于我的设置的一些信息。在我的产品实体中,我有一个用于 PutAway 表的 oneToMany 关联。
/**
* @ORM\OneToMany(targetEntity="WIC\InventoryBundle\Entity\PutAway", mappedBy="product", fetch="EAGER")
*/
protected $putAway;
public function __construct()
{
$this->putAway = new ArrayCollection();
}
这是我的树枝模板:
{% for action in productActions %}
<tr>
<td>{{ action.product.id }}</td>
<td>{{ action.product.sku }}</td>
<td>{{ action.product.name }}</td>
<td>{{ action.qty }}</td>
<td>0</td>
</tr>
<tr>
<td colspan="5">
<div class="row-fluid">
<div class="span2">
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>Purchase Order</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="span10">
<table class="table table-bordered" id="put_away_{{ action.product.id }}">
<thead>
<tr>
<th>Put Away Location</th>
<th>Quantity</th>
<th>Date</th>
<th>Entered By</th>
</tr>
</thead>
<tbody>
{% for putAway in action.product.putAway %}
<tr class="info">
<td>{{ putAway.inventoryLocation.name }}</td>
<td>{{ putAway.qty }}</td>
<td>{{ putAway.created|date("m/d/Y") }}</td>
<td>{{ putAway.createdBy.firstName }} {{ putAway.createdBy.lastName }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</td>
</tr>
{% endfor %}
【问题讨论】:
-
你能用
PutAway#product属性更新问题吗?你在那里定义了什么@JoinColumn?另外,检查开发工具栏以查看正在执行的查询并尝试直接从SQL控制台运行它... -
请原谅我的无知,我不知道这是什么意思“你能用 PutAway#product 属性更新问题吗”。我是 Symfony 的新手。
-
没关系,由于更好的格式化能力,我会继续写成“asnwer”;)
标签: php mysql sql symfony doctrine-orm