Cakephp保存没有id的数据

Posted

技术标签:

【中文标题】Cakephp保存没有id的数据【英文标题】:Cakephp saving data without id 【发布时间】:2013-06-10 11:36:00 【问题描述】:

我有一个没有 id 字段的表,并使用字段“app_no”作为主键。

现在我必须保存到这个模型/表...但是模型中没有 $id,因此它失败了。

有没有什么方法可以在没有$id 的情况下使用Model->save() 进行保存?

备注:该表与其他项目共享,因此不能对表结构进行任何更改。

【问题讨论】:

【参考方案1】:

请改用Model::updateAll()。第一个参数采用新值,第二个参数采用条件。

所以你可以这样做

$this->Model->updateAll(array("Model.value" => "'value'"),array("Model.name" => "name123"));

但要小心,与save() 不同,这需要 mysql 表达式。

好的,起初这听起来好像您没有主键。如果您只需要一个不同名称的 PK 字段,只需在模型中执行此操作:

public $primaryKey = 'app_no';

或者你可以直接在模型对象上设置属性

$this->Model->primaryKey

【讨论】:

【参考方案2】:

您可以在模型中设置主键,例如:

//Model 
var $primaryKey = 'app_no';

然后保存将按照您的要求进行。

请使用此链接检查“primaryKey”部分: http://book.cakephp.org/2.0/en/models/model-attributes.html

【讨论】:

主键已经设置好了。并且保存只适用于保存新记录,而不是保存现有记录 我用它来访问一个没有 id 字段的表(我创建了一个使用蛋糕模型和控制器的混合 wordpress)表 usermeta 使用 umeta_id 作为主键。 var $primaryKey = 'umeta_id';做到了。 (访问单个表使用 public $useTable = 'ry1k_usermeta';

以上是关于Cakephp保存没有id的数据的主要内容,如果未能解决你的问题,请参考以下文章

Cakephp - 创建记录但没有数据的保存方法

Cakephp 保存数据并读取 MAX

在 MVC 中保存相关数据(cakephp)

如何在 CakePHP 中保存相关数据?

CakePHP 在 HABTM 表中保存数据

数据未保存在数据库 cakephp 中