2012-06-26 1 views
0

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

public function customRule($check) 
{ 


} 

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

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

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

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

.?

ответ

3

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

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

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

+2

Предполагая, что имя первичного ключа является 'id', ярлык' $ this-> findById ($ id) 'также будет работать и требует меньше типа ;-) – nIcO

1

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

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

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