根据开发人员文档here是否可以进一步按对象的属性过滤结果?
例如,假设您在码头拥有多艘拥有相同所有者的船只,并且您只想在码头找到所有者的船只,那么可以进一步过滤数据(即按属性BoatOwner过滤)。
在阅读了Doctrine2文档后,我可以理解这可以做到,但我无法解决如何扩展C5代码或我可以调用哪些方法来实现这一点。
<?php defined('C5_EXECUTE') or die(_("Access Denied.")); ?>
<?php
if (isset($entry) && is_object($entry)) {
$boats = $entry->getBoats();
?>
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Year</th>
<th>Owner</th>
<th>Classification</th>
</tr>
</thead>
<tbody>
<?php if (count($boats)) {
foreach($boats as $boat) { ?>
<tr>
<td><?=$boat->getBoatName()?></td>
<td><?=$boat->getBoatYear()?></td>
<td><?=$boat->getBoatOwner()?></td>
<td><?=$boat->getBoatClass()?></td>
</tr>
<?php } ?>
<?php } else { ?>
<tr>
<td colspan="4">No boats found.</td>
</tr>
<?php } ?>
</tbody>
</table>
<?php } ?>
以上是C5文档中的代码。可以通过某种方式扩展神奇的“获取”方法,还是使用$ boats数组(我认为它是一个数组)来选择只有具有特定属性值的船只的更简单的解决方案?
答案 0 :(得分:0)
答案是在foreach循环中放置一个if语句。
if (count($boats)) {
foreach($boats as $boat) {
if($boat->getBoatOwner() == "boat owner's name here") {
?>
<tr>
<td><?=$boat->getBoatName()?></td>
<td><?=$boat->getBoatYear()?></td>
<td><?=$boat->getBoatOwner()?></td>
<td><?=$boat->getBoatClass()?></td>
</tr>
<?php;
} else {
?>
<?php;
}
?>
<?php } ?>
<?php } else { ?>
<tr>
<td colspan="4">No boats found.</td>
</tr>
<?php } ?>
</tbody>
</table>
<?php } ?>
我想我会将船主的名字作为变量传递,可能来自页面属性,这是有用的。