Может ли CakePHP вставить данные в модель, используя несвязанный метод `$ this-> Model-> query ()`? - PullRequest
0 голосов
/ 06 апреля 2009

В CakePHP, Можно ли вставить в другую таблицу другую модель, не связанную с ней? Например, у меня есть модель Post. Можно ли использовать $ this-> Post-> query ('вставить в имя таблицы (col1) значения ('. "$ formname". ')');

Предложите мне ответ ......

Ответы [ 4 ]

2 голосов
/ 06 апреля 2009

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

var $uses = array('Recipe', 'User');

Это скажет контроллеру (в данном случае RecipesController) использовать модель User, а также модель по умолчанию (Recipe). Теперь вы можете обращаться к $ this-> User, как если бы вы были в UsersController.

Надеюсь, я правильно понял ваш вопрос.

Tom

1 голос
/ 06 апреля 2009

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

<?php 
  App::import('Model', 'MyModel');
  $this->MyModel = new MyModel;
  $this->MyModel->save($MyData);
?>
0 голосов
/ 09 апреля 2009

Используйте Model :: query () только тогда, когда это абсолютно необходимо, и другого пути нет (т. Е. В крайних случаях). Cake дает вам много инструментов, чтобы избежать этого.

Самое простое решение - использовать следующее:

$otherModel = ClassRegistry::init('OtherModel');
$otherModel->save(<your usual stuff here>);

ClassRegistry :: init () возвращает экземпляр вашей модели (делать это самостоятельно - плохая идея), и это простой способ получить доступ к любой модели в вашем приложении.

Если вы используете метод «$ var использует», OtherModel будет загружен всегда для этого контроллера, что может быть не тем, что вы хотите (это приносит много ненужных издержек).

0 голосов
/ 06 апреля 2009

Да, с помощью query () вы можете выполнять любые операторы SQL, поэтому также можно использовать этот метод для вставки данных, как вы это делали в своем примере.

Однако обычно используется один из упомянутых подходов.

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