如何在CakePHP控制器中使用多个模型

时间:2011-05-03 12:05:45

标签: cakephp model controller

我创建了一个注册表单,然后将数据发送到控制器。

我想将此数据插入3个不同的表(模型)。

如何实现这一目标?

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)

}
?>   

这将允许您的控制器使用Model1Model2ModelN。根据您的需要重命名并添加更多内容。

如果您不想在控制器中使用模型,可以将$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)提高表效率的开始