我创建了一个注册表单,然后将数据发送到控制器。
我想将此数据插入3个不同的表(模型)。
如何实现这一目标?
答案 0 :(得分:19)
你的意思(在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书籍章节:
答案 1 :(得分:0)
只要您的表单根据CakePHP约定进行格式化,并且模型之间的关系将被正确设置,这将在您调用$this->Model->save($this->data)
时自动完成。
答案 2 :(得分:0)
这实际上最好是动态地浏览模型,因为你没有为你可能不需要的所有方法加载它。
$this->loadModel('Model1');
更有效率。
我还建议确保这些表没有链接。如果他们是最好通过以下链接他们:
$this->Model1->Model2->find();
这是教你通过Containable和Relationships(HasMany,BelongsTo,HABTM)提高表效率的开始