cakephp $ использует или запрашивает действие - PullRequest
1 голос
/ 23 сентября 2010

Я нахожусь в ситуации, когда мне нужно получить данные из 6 моделей.я не могу использовать ассоциации, поскольку они не связаны.Так что я должен использовать $uses или request action или любое другое решение

Ответы [ 6 ]

2 голосов
/ 21 декабря 2010

Если вам понадобятся эти модели только для одного find вызова с необходимыми связями, я рекомендую использовать bindModel, см. Создание и уничтожение ассоциаций на лету .

2 голосов
/ 24 сентября 2010

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

ClassRegistry::init("model_name")

или

loadModel("model_name")

.

Например, чтобы использовать User модель

$this->User = ClassRegistry::init('User');

Или

$this->loadModel('User');

Затем вы можете выполнить запрос, например

$this->User->find("all");
1 голос
/ 25 сентября 2010

Как рекомендовали другие, вы должны использовать Controller::loadModel().

Дополнительно, я бы предложил вам сделать что-то вроде YourController::_loadMyMegaData(), которое бы загружало все необходимые модели и устанавливало ваши данные.Это позволит избежать случайной загрузки этих моделей и избавит вас от каких-либо блоков, если позже.

Кроме того, по возможности избегайте requestAction(), это не только некрасиво, но и снижение производительности(Он, конечно, полезен, но это случается не часто:))

1 голос
/ 24 сентября 2010

Я не согласен с Трэвисом. Намного лучше использовать loadModel, тогда вы можете быть уверены, что загружаете то, что вам нужно, когда вам это нужно. Кто сказал, что вы не будете расширять модель, чтобы включить методы, которые не требуют всех этих других моделей?

Вырезание и вставка - большое повышение производительности программиста.

1 голос
/ 23 сентября 2010

Вы можете попробовать использовать $, или, если вы хотите загружать модели только тогда и там, где они вам нужны, вы можете использовать loadModel (http://book.cakephp.org/view/845/loadModel). LoadModel лучше, чем использует $, с точки зрения производительности.

0 голосов
/ 08 января 2014

Вы можете использовать следующее:

$this->loadModel('ModelName'); 
$this->ModelName->find();

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

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