[英]How to disable get last inserted id in CakePHP
我正在使用具有复合主键的数据库,而CakePHP不支持该功能。
因此,当我保存一些信息时,CakePHP尝试获取最后插入的id,但返回一些错误(正是因为此表/模型没有“一个主键”,而是两个或多个)。
那么,如何禁用它?
注意:我要获取执行的最后一个查询和所有其他信息,而不是获取最后插入的id action 。
我尝试了许多解决方案来修改CakePHP,以支持主键的合成,但是,仅对核心进行了修改,我知道这不是一个好习惯,因此我放弃了。
这不是一个很好的实践,但是,如果您需要
注意:我尽力而为,但是我的代码可能不是做到这一点的最佳选择,对于“ multiplePrimarykey,不要使用CompositePrimaryKey”感到抱歉 。
git diff: https : //gist.github.com/patrickmaciel/7662749
综上所述
// Add this in your model
public $primaryKey = false;
public $multiplePrimaryKey = array('key_one', 'key_two');
// Done :)
对不起我的英语不好
由于CakePHP中缺乏对复合键的支持,因此您将不得不使用Model :: query()执行操作。
我按照@mark博客的说明进行操作 ,无需更改CakePHP核心的原始文件,就可以使用自定义的Model.php
和DboSource.php
。
张贴: http : //www.dereuromark.de/2011/10/31/freshly-baked-cake2-0-tips/
使用自己的类而不是核心类
假设您要在不覆盖核心文件夹的情况下对核心文件应用修订。 或者您想完全替换一个文件。
只需在/ Lib文件夹内使用相同的文件夹结构即可。 对于您自己的“ FormAuthenticate” /app/Lib/Controller/Component/Auth/FormAuthenticate.php
您在这里找到的我的代码和原始Cakephp核心的差异: https : //gist.github.com/patrickmaciel/7662749
我在github中创建一个存储库,其中包含CakePHP 2.x中复合主键工作所需的所有文件。
github的: https : //github.com/patrickmaciel/cakephp-composite-primary-key
此更改使您可以按照以下说明在模型中使用复合主要模型:
// Add this in your model
public $primaryKey = false;
public $compositePrimaryKey = array('key_one', 'key_two', '........');
我希望这可以帮助别人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.