получать только «включенные» записи из базы данных в cakephp v1.3 - PullRequest
0 голосов
/ 29 июня 2010

Есть ли способ извлечь только те записи модели, которые имеют "status = 1" в cakephp v1.3?

Я создал поле с именем «status» в каждой таблице моего веб-приложения.

У меня есть модель с именем «Сообщение». Я хочу, чтобы отображались только те сообщения, включенные в результаты поиска, которые имеют статус = 1. Сообщения со статусом «0» не будут отображаться и не будут включены в результаты поиска.

Пожалуйста, помогите мне, если я смогу сделать это способом cakePHP, сейчас как временное решение я использую 'status = 1' в массиве условий каждой находки сообщений.

Спасибо

Ответы [ 3 ]

1 голос
/ 29 июня 2010

Я бы включил это в метод обратного вызова beforeFind(). Вы можете включить его в обратный вызов для каждой модели (но только один раз для каждой модели - не для каждого запроса ), или вы можете применить его к вашему AppModel, чтобы все остальные ваши модели унаследовали его.

В обратном вызове beforeFind() вы можете изменить структуру запроса. В этом случае вы примените условие array( 'status' => 1 ) к входящему запросу. Дамп структуры данных аргумента, чтобы увидеть, что входит, и я думаю, что это будет иметь смысл для вас.

Обратите внимание, что если вы решили сделать это в своем AppModel и вам необходимо создать обратный вызов beforeFind для конкретной модели в будущем, вы должны быть уверены, что вы вызовете parent::beforeFind() в своем подклассе 'beforeFind() метод.

0 голосов
/ 29 июня 2010

В основном вы говорите о мягком удаляемом поведении. Здесь есть один . Для меня это не идеально, но для простого приложения это может сработать В комментариях вы также можете увидеть улучшения:)

Но расширение beforeFind () в AppModel тоже должно быть в порядке.

0 голосов
/ 29 июня 2010

Нашел ответ более здесь Для этого пригодится обратный вызов beforeFind ().

вот так

public function beforeFind($conditions) {
    if(!isset($conditions['conditions']['Message.status']) && !isset($conditions['conditions']['status'])) {
        $conditions['conditions']['Message.status'] = 1;
    }
    return $conditions;
}
...