Как использовать более одной модели в контроллере CakePHP - PullRequest
3 голосов
/ 03 мая 2011

Я создал регистрационную форму и отправляю данные контроллеру.

Я хочу вставить эти данные в 3 разные таблицы (модели).

Как этого достичь?

Ответы [ 3 ]

19 голосов
/ 03 мая 2011

Что вы имеете в виду (в терминах CakePHP), что вы хотите использовать больше моделей, чем модель по умолчанию.модель по умолчанию называется так же, как ваш контроллер.

Чтобы достичь желаемого, просто объявите переменную $uses в вашем контроллере.Это делается так:

<?php
class ExampleController extends AppController {
    var $name = 'Example';

    // $uses is where you specify which models this controller uses
    var $uses = array('Model1', 'Model2', 'ModelN');

    // ... here go your controller actions (methods)

}
?>   

Это позволит вашему контроллеру использовать Model1, Model2 и ModelN.Переименуйте их и добавьте больше в соответствии с вашими потребностями.

Если вы не хотите использовать модели в вашем контроллере, вы можете присвоить $uses пустому массиву, например:

var $uses = array();

Взгляните на соответствующие главы книги CakePHP в соответствии с используемой версией:

0 голосов
/ 21 марта 2014

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

$this->loadModel('Model1');

Намного эффективнее.

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

$this->Model1->Model2->find();

Это начало учить вас быть более эффективными с помощью таблиц с помощью Containable and Relationships (HasMany, BelongsTo, HABTM)

0 голосов
/ 03 мая 2011

Пока ваши формы отформатированы в соответствии с соглашениями CakePHP и отношения между моделями будут установлены правильно, это будет выполняться автоматически при вызове $this->Model->save($this->data).

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