0

在 CakePHP 中,是否可以插入与另一个模型无关的另一个表?例如,我有一个模型 Post 。我可以使用 $this->Post->query('insert into tablename(col1) values (' . "$formname" . ')');

建议我回答......

4

4 回答 4

2

您可以使用'uses' 变量来指定要在控制器中使用的模型:

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

这将告诉控制器(在本例中为 RecipesController)使用 User 模型以及它的默认模型(Recipe)。现在您可以像在 UsersController 中一样处理 $this->User。

希望我正确理解了你的问题。

汤姆

于 2009-04-06T13:23:54.253 回答
1

为另一个表创建一个模型,然后您可以随时使用此表写入该表:

<?php 
  App::import('Model', 'MyModel');
  $this->MyModel = new MyModel;
  $this->MyModel->save($MyData);
?>
于 2009-04-06T13:29:50.027 回答
0

是的,使用 query() 您可以执行任何 SQL 语句,因此也可以使用此方法插入数据,就像您在示例中所做的那样。

但是,通常使用提到的其他方法之一。

于 2009-04-06T15:57:30.607 回答
0

仅在绝对必要且没有其他方法(即在极端情况下)时才使用 Model::query()。Cake 为您提供了很多工具来避免这样做。

最简单的解决方案是使用以下内容:

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

ClassRegistry::init() 返回模型的一个实例(自己做这个是个坏主意),并且是访问应用程序中任何模型的简单方法。

如果您使用“var $uses”方法,OtherModel 将始终为该控制器加载,这可能不是您想要的(它会带来很多不必要的开销)。

于 2009-04-09T09:07:58.257 回答