В CakePHP можно ли вставить в другую таблицу другую модель, не связанную с ней? Например, у меня есть модель Post. Могу ли я использовать $this->Post->query('insert into tablename(col1) values (' . "$formname". ')');
Подскажите ответ......
В CakePHP можно ли вставить в другую таблицу другую модель, не связанную с ней? Например, у меня есть модель Post. Могу ли я использовать $this->Post->query('insert into tablename(col1) values (' . "$formname". ')');
Подскажите ответ......
Вы можете использовать 'uses' var, чтобы указать модели вы хотите использовать в своем контроллере:
var $uses = array('Recipe', 'User');
Это сообщит контроллеру (в данном случае RecipesController) использовать модель пользователя, а также модель по умолчанию (рецепт). Теперь вы можете обратиться к $this->User, как если бы вы были в UsersController.
Надеюсь, я правильно понял ваш вопрос.
Том
Создайте модель для другой таблицы, после чего вы сможете писать в нее в любое время, используя это:
<?php
App::import('Model', 'MyModel');
$this->MyModel = new MyModel;
$this->MyModel->save($MyData);
?>
Да, с помощью query() вы можете выполнять любые операторы SQL, поэтому также можно использовать этот метод для вставки данных, как в вашем примере.
Однако обычно используется один из других упомянутых подходов.
Используйте Model::query() только в случае крайней необходимости и другого выхода (т.е. в крайних случаях). Cake дает вам много инструментов, чтобы избежать этого.
Самым простым решением было бы использовать следующее:
$otherModel = ClassRegistry::init('OtherModel');
$otherModel->save(<your usual stuff here>);
ClassRegistry::init() возвращает экземпляр вашей модели (плохая идея делать это самостоятельно) и является простым способом доступа к любой модели в вашем приложении.
Если вы используете метод "var $uses", OtherModel будет загружаться всегда для этого контроллера, что может быть не тем, что вам нужно (это приводит к большому количеству ненужных накладных расходов).