按照这里的开发人员文档,是否可以进一步按对象的属性过滤结果?
例如,假设您在码头中有多艘船,这些船具有相同的所有者,并且您只想在码头中找到该所有者的船只,是否有办法进一步过滤数据(即按属性 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 文档中的代码。魔术"get"方法是否可以以某种方式扩展,或者是否有更简单的解决方案与$boats数组(我认为它是一个数组)一起使用以仅选择具有特定属性值的船?
答案是将 if 语句与 foreach 循环放在一起。
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 } ?>
我想我会将船主的名字作为变量传递,可能来自页面属性,以便有任何用处。