在 CakePHP 中,是否可以插入与另一个模型无关的另一个表?例如,我有一个模型 Post 。我可以使用 $this->Post->query('insert into tablename(col1) values (' . "$formname" . ')');
建议我回答......
在 CakePHP 中,是否可以插入与另一个模型无关的另一个表?例如,我有一个模型 Post 。我可以使用 $this->Post->query('insert into tablename(col1) values (' . "$formname" . ')');
建议我回答......
您可以使用'uses' 变量来指定要在控制器中使用的模型:
var $uses = array('Recipe', 'User');
这将告诉控制器(在本例中为 RecipesController)使用 User 模型以及它的默认模型(Recipe)。现在您可以像在 UsersController 中一样处理 $this->User。
希望我正确理解了你的问题。
汤姆
为另一个表创建一个模型,然后您可以随时使用此表写入该表:
<?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 将始终为该控制器加载,这可能不是您想要的(它会带来很多不必要的开销)。