Cakephp: добавить модель в $ использует во время выполнения - PullRequest
0 голосов
/ 29 ноября 2011

Мне нужно написать модульную функцию, которая могла бы работать с любым контроллером. Мне нужно во время выполнения сделать что-то вроде.

$tools=array("a","b","c");
foreach($tools as $tool{
   ...
   //here there should be something like add_to_$uses($tool)
   $this->{$tool}->find();

Очевидно, что простое добавление элемента в $this->uses не работает. Как я должен это сделать?

Ответы [ 2 ]

3 голосов
/ 29 ноября 2011

Я думаю, что вам нужен loadModel метод.

$tools=array("a","b","c");
foreach($tools as $tool) {
   // ...
   $this->loadModel($tool);
   $this->{$tool}->find();
}

Больше информации в Книге CakePHP

0 голосов
/ 29 ноября 2011

Я не знаю, как загрузить модель в контроллер во время выполнения. По сути, вам нужно добавить все модели, которые вы когда-либо могли использовать, в массив $uses контроллера.

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

$this->Model1->bind(
    'hasOne' => array(
        'Model2'
    )
);

Вы можете изменить hasOne на тип отношений для вашей модели. Вы также можете добавить столько моделей, сколько хотите.

Обратное утверждение это unbind.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...