доступ к данным модели в пользовательском правиле проверки

У меня есть пользовательское правило проверки:

public function customRule($check)
{


}

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

$this->id = 23; 
$this->read();

Но тогда все данные в текущей модели будут переопределены функцией read (я имею в виду, что функция $this->data[$this->alias][...] переопределена.

Как я могу получить эти данные?


person user606521    schedule 26.06.2012    source источник


Ответы (2)


Используйте обычный

$result = $this->find('first', array('conditions' => array($this->alias . '.' . $this->primaryKey => $id));

с идентификатором в условиях поиска. И работать с результатом, не переопределяя свойства данных.

person floriank    schedule 26.06.2012
comment
Предполагая, что имя первичного ключа id, сокращение $this->findById($id) также будет работать и потребует меньшего количества ввода ;-) - person nIcO; 27.06.2012

Просто отметим, что если вы хотите получить полную запись данных, которые в настоящее время проверяются, она всегда доступна в $this->data внутри правила проверки, в отличие от $check, которая содержит только данные в < strong>текущее проверенное поле.

Если вам нужно проверить на основе чего-то, что хранится в БД, вы можете использовать $this->find() или любую из функций модели, как вы находитесь в модели.

Я поддерживаю ответ @burzum +1.

person Borislav Sabev    schedule 27.06.2012