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

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

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

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

eg:

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

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

Мой вопрос:

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

Любое лучшее решение будет оценено.


person Rikesh    schedule 22.09.2011    source источник
comment
вы можете попробовать использовать магическую функцию: $this-›Article-›findByUserId($user_id);   -  person sukinsan    schedule 22.09.2011


Ответы (2)


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

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

person deizel    schedule 22.09.2011

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

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

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

person JJJ    schedule 22.09.2011