Вызов одной модели из другой в CakePHP

#cakephp #cakephp-model

#cakephp #cakephp-модель

Вопрос:

У меня есть одна модель пользователя, а другая — модель кода доступа. Во время регистрации я использую пользовательскую модель, в которой я установил некоторые правила проверки данных формы.

На странице регистрации у меня есть одно поле, которое не принадлежит модели пользователя, т.Е. Поле кода доступа. Я хочу проверить это поле в пользовательской модели, чтобы проверить, присутствует ли введенный пользователем код в таблице accesscode или нет, а также хочу проверить в третьей модели, т.Е. useraccesscode для этого кода доступа.

Как я могу это сделать? Я использую CakePHP версии v1.2.

Спасибо

Ответ №1:

Приведенный ниже пример может быть полезен:

 App::import('Model', 'Student');
$Student = new Student();
$dataArray =  $Student->getDataArray("name like '%".$keword."%'");
  

Комментарии:

1. плохая идея. никогда не используйте App::import и new — ClassRegistry используется для моделей.

2. еще одна плохая идея в приведении примеров, поощряющих внедрение SQL

Ответ №2:

 $validated = $this->User->Accesscode->find('list', array('conditions' => array('Accesscode.name' => $this->data['User']['accesscode'])));

if(count($validated) > 0)
     //means that accesscode supplied in the form matches some accesscode in the database
  

Комментарии:

1. спасибо, но я хочу реализовать это на модели, как вы думаете, это будет работать в модели

2. Это решение будет работать без его реализации в модели.

3. 1 Это, безусловно, самый правильный «простой» способ ведения дел.

Ответ №3:

 App::import('Model', 'MyModel');
  

Ответ №4:

Вы можете создавать экземпляры других моделей из любой модели / контроллера, используя один из двух приведенных ниже методов:

При использовании Cake 1.2:

 App::import('model','Attribute');
$attr = new Attribute();
  

При использовании Cake 1.1:

 loadModel('Attribute');
$attr = new Attribute();