我有一个MySQL归档表,其结构如下:
`histories`
`uid` int(10) unsigned NOT NULL,
`type` varchar(255) NOT NULL,
`param` int(11) NOT NULL,
`param2` varchar(255) NOT NULL,
`time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
ENGINE=ARCHIVE DEFAULT CHARSET=latin1;
我不想要添加自动递增的“id”列。这个表的引擎是归档的,它完全符合我的需要,具有这种结构。
我希望像这样保存:
$this->History->create();
$this->History->save(['uid' => uid, 'type' => 'deleted_entry', 'param' => $thing_id]);
但CakePHP强制更新,我不想要,ARCHIVE引擎不支持。 Cake似乎正在寻找uid的主键,找到它并决定它应该更新,似乎没有可用于强制插入的标志。我不想诉诸$this->Model->query()
。
更新
在AppModel中设置$primaryKey = null
。然后会插入$this->create();
。
class History extends AppModel {
public $primaryKey = null;
}
如果您想在之后进行更新,只需:
在$this->History->primaryKey = 'uid';
之前 save()
答案 0 :(得分:1)
您可以通过将模型的$primaryKey
属性设置为null
来告诉Cake 2您没有主键:
$this->History->primaryKey = null;
$this->History->create();
$this->History->save(['uid' => uid, 'type' => 'deleted_entry', 'param' => $thing_id]);