繁体   English   中英

如何禁用CakePHP中获取最后插入的ID

[英]How to disable get last inserted id in CakePHP

我正在使用具有复合主键的数据库,而CakePHP不支持该功能。

因此,当我保存一些信息时,CakePHP尝试获取最后插入的id,但返回一些错误(正是因为此表/模型没有“一个主键”,而是两个或多个)。

那么,如何禁用它?

注意:我要获取执行的最后一个查询和所有其他信息,而不是获取最后插入的id action

测验

我尝试了许多解决方案来修改CakePHP,以支持主键的合成,但是,仅对核心进行了修改,我知道这不是一个好习惯,因此我放弃了。

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 2.4.3
  • 作曲家
  • PostgreSQL 8.4
  • Windows 7 x64
  • 崇高文字2

对不起我的英语不好

由于CakePHP中缺乏对复合键的支持,因此您将不得不使用Model :: query()执行操作。

我按照@mark博客的说明进行操作 ,无需更改CakePHP核心的原始文件,就可以使用自定义的Model.phpDboSource.php

张贴: http : //www.dereuromark.de/2011/10/31/freshly-baked-cake2-0-tips/

使用自己的类而不是核心类

假设您要在不覆盖核心文件夹的情况下对核心文件应用修订。 或者您想完全替换一个文件。

只需在/ Lib文件夹内使用相同的文件夹结构即可。 对于您自己的“ FormAuthenticate” /app/Lib/Controller/Component/Auth/FormAuthenticate.php

与CakePHP核心文件不同

您在这里找到的我的代码和原始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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM