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


В функции 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(), чтобы получить единственный вариант?

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

Author: tereško, 2011-09-22

2 answers

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

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

 3
Author: deizel, 2011-09-22 12:37:53

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

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

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

 0
Author: JJJ, 2011-09-22 12:34:20