ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

int列在CakePHP中作为字符串从DB中提取

2019-06-20 22:05:26  阅读:231  来源: 互联网

标签:php mysql cakephp cakephp-2-1


我是CakePHP的新手,但到目前为止我发现它很容易使用.
今天我遇到了从数据库导出数据的问题.

我将我的一个模型导出为JSON.
一切都很顺利,除了我注意到CakePHP将id列导出为字符串.该模型在mysql中定义为int.
我已经在JSON输出和模型中检查了 –

var_dump($this->Post->findById($id));exit;

在模型中,id也被定义为一个字符串.

这与依赖于JSON输出的其他系统混淆,后者用于获取整数作为ID.

我尝试在模型中设置$_schema属性,但这并没有改变任何东西.

我很感激你的帮助.

谢谢,

解决方法:

看到
http://cakephp.1045679.n5.nabble.com/When-retrieving-data-fields-returned-as-strings-and-the-tale-of-climbing-a-mountain-to-cast-those-str-td4312868.html

和票:
http://cakephp.lighthouseapp.com/projects/42648/tickets/2485-model-find-results-are-all-returned-as-string-fields-even-with-int11-fields

它是cake2.x中的已知问题(并且基于数据库返回的方式),并且可以使用新数据源在cake3中解决.虽然它看起来不像它,因为会出现不一致的情况,并且会在所有找到的记录中手动施放开销……

直到找到解决方案,你想在afterFind回调中手动转换.使用schema(),您可以找到每个字段类型.
如果您在多个模型上使用它,请将其放入AppModel中.

你也可以写一个行为来干净利落地为你完成这项工作 – 所以你在每个模型中所要做的就是:

public $actsAs = array('CastConvert'); //name it whatever you like

你不想受影响的模特你就是不要附上它.
小心相关记录.这可能也是对蛋糕的限制.它通常只触发主记录的回调.在这些情况下,您可能希望手动触发行为回调.
如果您将其命名为cast(),则可以直接在模型上访问它:

$this->Primary-Secondary->cast()

或某事

标签:php,mysql,cakephp,cakephp-2-1
来源: https://codeday.me/bug/20190620/1248425.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有