2016-04-15 3 views
1

Есть ли способ в CakePHP установить условия по умолчанию для таблицы?CakePHP 3 - Можете ли вы установить стандартные условия для таблицы?

Например, моя таблица имеет таблицу deleted с логическим значением 0 или 1. Я хотел бы ограничить приложение по умолчанию, чтобы выбирать строки, где deleted = 0.

ответ

4

Внесите обратный вызов beforeFind() таблицы и добавьте там свое состояние.

http://book.cakephp.org/3.0/en/orm/table-objects.html#beforefind

торт \ ORM \ Таблица :: beforeFind (Event $ событие, запрос $ запроса ArrayObject $ опции, булево $ первичный)

Событие Model.beforeFind обжигают перед каждым найти операция. Остановив событие и предоставив возвращаемое значение, вы можете полностью обойти операцию поиска. Любые изменения, сделанные для экземпляра $ query, будут сохранены для остальной части поиска. Параметр $ primary указывает, является ли это корневым запросом или связанным с ним запросом. Все ассоциации, участвующие в запросе, будут иметь событие Model.beforeFind. Для ассоциаций, которые используют объединения, будет предоставлен фиктивный запрос. В вашем слушателе событий вы можете установить дополнительные поля, условия, объединения или сформировать форму. Эти параметры/функции будут скопированы в корневой запрос.

Вы можете использовать этот обратный вызов для ограничения операций поиска на основе роли пользователя или принятия решений кеширования на основе текущей нагрузки.

+0

Где находится метод beforeFind(), фактически расположенный и задокументированный? Я не могу найти его в документации API и хотел бы узнать больше об этом, а не только подписи метода и описания. – BadHorsie

+0

Ну, тогда я рекомендую вам прочитать главу * цели * книги. Вам нужно реализовать этот метод в объекте таблицы с сигнатурой, потому что это обратный вызов события, как говорит вам книга. – burzum

Смежные вопросы