#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();