Следуя документации разработчика Вот Можно ли пойти дальше и отфильтровать результаты по атрибутам объекта?
Например, скажем, у вас было несколько лодок в Marina, у которых был один и тот же владелец, и вы хотели найти только лодки этого владельца в Marina, есть ли способ дальнейшей фильтрации данных (то есть фильтрация по атрибуту 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 } ?>
Я думаю, что передам имя владельца лодки как переменную, вероятно, из атрибута страницы, чтобы это имело какой-либо смысл.
Других решений пока нет …