【发布时间】:2017-08-23 13:59:57
【问题描述】:
这是使用 PHQL 显示 3 个不同表中的行的工作代码。我想使用$this->modelsManager->createBuilder() 编写相同的代码。请在下面找到工作代码和错误。
控制器
<?php
$phql = 'SELECT product.*, currency.*, unittype.* FROM product LEFT JOIN currency ON product.CurrencyId=currency.Id LEFT JOIN unittype ON product.UnitTypeId=unittype.Id ORDER BY product.Name ASC';
$query = $this->modelsManager->createQuery($phql);
$this->view->products = $query->execute();
?>
查看
<table class="table">
<tr>
<th>Name</th>
<th>Description</th>
<th>Unit Type</th>
<th>Price</th>
<th>Currency</th>
<th></th>
<th></th>
</tr>
<?php foreach($products as $row) { ?>
<tr>
<td><?php echo $row->product->Name; ?></td>
<td><?php echo $row->product->Description; ?></td>
<td><?php echo $row->unittype->Name; ?></td>
<td><?php echo $row->product->Price; ?></td>
<td><?php echo $row->currency->Code; ?></td>
<td><?php echo $this->tag->linkTo('product/edit/'.$row->product->Id,'Edit'); ?></td>
<td><?php echo $this->tag->linkTo('product/delete/'.$row->product->Id,'Delete'); ?></td>
</tr>
<?php } ?>
</table>
我想使用modelmanager的createbuilder;如何编写查询和 打印视图?
下面是我写的有问题的代码:
控制器
<?php
$this->view->products = $this->modelsManager->createBuilder()
->from('product')
->innerjoin('currency','product.CurrencyId=currency.Id')
->orderBy('product.Name')
->getQuery()
->execute();
?>
查看
<table class="table">
<tr>
<th>Name</th>
<th>Description</th>
<th>Unit Type</th>
<th>Price</th>
<th>Currency</th>
<th></th>
<th></th>
</tr>
<?php foreach($products as $product) { ?>
<tr>
<td><?php echo $product->Name; ?></td>
<td><?php echo $product->Description; ?></td>
<td><?php echo $product->UnitTypeId; ?></td>
<td><?php echo $product->Price; ?></td>
<td><?php echo $product->currency->Id; ?></td>
<td><?php echo $this->tag->linkTo('product/edit/'.$product->Id,'Edit'); ?></td>
<td><?php echo $this->tag->linkTo('product/delete/'.$product->Id,'Delete'); ?></td>
</tr>
<?php } ?>
</table>
以上代码产生以下错误:
注意:试图获取非对象的属性 C:\wamp\www\xxxx.volt.php 在第 xx 行
【问题讨论】:
-
xx是哪一行?您是否尝试过<?php die(var_dump($products)) ?>以查看是否返回任何数据? -
@PaulSCoder 是的,它返回的是空数组
-
@PaulSCoder 如果你需要我的完整源代码,你可以在这里找到github.com/syednizamudeen/invoice