Условие в функции read () CakePHP - PullRequest
       3

Условие в функции read () CakePHP

3 голосов
/ 22 сентября 2011

В функции CakePHP edit Я использую функцию read() как:

$this->data = $this->Article->read(null, $id);

Приносит все поля $id. Теперь, что я пытаюсь настроить, чтобы дать еще одно условие в read(), чтобы получать статьи, только если пользователь, вошедший в систему, связан с ним.

например:

 $this->Article->user_id = $user_id;
 $this->Article->id = $id;
 $this->Article->read();

И, очевидно, он хочет работать, так как read() приносит данные только w.r.t. $id (первичный ключ).

Мой вопрос:

  1. Есть ли способ настроить функцию чтения с условием, превышающим $id? Потому что это просто нужно добавить одну строку во всех моих контроллерах, если это работает?
  2. Или я должен использовать длинный код функции find (), чтобы получить это единственный вариант?

Любое лучшее решение будет заметно.

Ответы [ 2 ]

3 голосов
/ 22 сентября 2011

Если вам действительно нужно это сделать, вы можете использовать методы ООП, чтобы переопределить работу основного метода.

Просто скопируйте метод Model::read() в свой класс AppModel ивнести необходимые изменения.

0 голосов
/ 22 сентября 2011

Вы должны использовать find(), если хотите сделать поиск условно. Другой вариант - прочитать данные, только если выполнены условия:

$this->Article->id = $id;
if( $this->Article->field( 'user_id' ) == $user_id ) {
    $this->Article->read();
}

(read() заполняет $this->data автоматически.)

...