在CakePHP中, 是否可以插入与另一个与之无关的模型的表中? 例如,我有一个模型Post。我可以使用它 $ this-> post-> query('insert into tablename(col1)values('。“$ formname”。')');
建议我答案......
答案 0 :(得分:2)
您可以使用'uses' var指定要在控制器中使用的模型:
var $uses = array('Recipe', 'User');
这将告诉控制器(在本例中为RecipesController)使用User模型以及它的默认模型(Recipe)。现在,您可以使用$ this-> User,就像您在UsersController中一样。
希望我能正确理解你的问题。
汤姆
答案 1 :(得分:1)
为另一个表创建一个模型,然后您可以随时使用以下内容写入表:
<?php
App::import('Model', 'MyModel');
$this->MyModel = new MyModel;
$this->MyModel->save($MyData);
?>
答案 2 :(得分:0)
是的,使用query()可以执行任何SQL语句,因此也可以使用此方法插入数据,就像在示例中所做的那样。
但是,通常使用上述其他方法之一。
答案 3 :(得分:0)
仅在绝对必要时才使用Model :: query(),并且没有其他方法(即在极端情况下)。 Cake为您提供了许多工具来避免这样做。
最简单的解决方案是使用以下内容:
$otherModel = ClassRegistry::init('OtherModel');
$otherModel->save(<your usual stuff here>);
ClassRegistry :: init()返回模型的一个实例(自己这样做是个坏主意),并且是一种在应用程序中访问任何模型的简单方法。
如果你使用“var $ uses”方法,那么对于那个控制器,OtherModel将被加载总是,这可能不是你想要的(它会带来很多不必要的开销)。