Как выполнить предварительный выбор в zf2

У меня AbstractTableGateway такой:

class FundsTable extends AbstractTableGateway
{

protected $table = 'tb_funds';

public function __construct(AdapterInterface $adapter)
{
    $this->adapter = $adapter;
    $this->resultSetPrototype = new HydratingResultSet(new FundsHydrator(), new Fund());
    $this->initialize();
}

public function fetchAll($year)
{
    $select = new Select(array("f" => $this->table));
    $resultSet = $this->selectWith($select);
    $resultSet->initialize($resultSet->toArray());
    return $resultSet;
}

}

И я хотел бы что-то проверить, прежде чем возвращать $resultSet в методе fetchAll, но у меня много этих методов, и я не хочу помещать if или where в каждый из них, хотел бы сделать функцию, не связанную с классом, i пытался использовать EventFeature или TableGateway, но у zend нет документации по этому поводу.

Ребята, у вас есть какие-нибудь предложения?

Спасибо

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел способ сделать это,

В модели просто добавьте функцию EventFeature в конструкцию:

$this->featureSet = new FeatureSet();
$this->featureSet->addFeature(new EventFeature());

А затем в вашем Module.php вам нужно будет создать SharedEventManager. Это потому, что когда модель создает экземпляр EventFeature, внутри него создается новыйEventManager, отличный от EventManager, который Zend создает в начальной загрузке, поэтому вам просто нужно создать его и прикрепить следующее событие:

public function onBootstrap(MvcEvent $event)
{
  $eventManager = $event->getApplication()->getEventManager();
  $sharedEventManager = $eventManager->getSharedManager();

  $sharedEventManager->attach(
        'Zend\Db\TableGateway\TableGateway',
        EventFeature::EVENT_PRE_SELECT,
        function (EventFeature\TableGatewayEvent $e) {
            //Do stuff here or call some method
  });
}

Другие вопросы по теме