我是Cake
PHP的新手,但到目前为止我发现它很容易使用.
今天我遇到了从数据库导出数据的问题.
今天我遇到了从数据库导出数据的问题.
我将我的一个模型导出为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.1045679.n5.nabble.com/When-retrieving-data-fields-returned-as-strings-and-the-tale-of-climbing-a-mountain-to-cast-those-str-td4312868.html
它是cake2.x中的已知问题(并且基于数据库返回的方式),并且可以使用新数据源在cake3中解决.虽然它看起来不像它,因为会出现不一致的情况,并且会在所有找到的记录中手动施放开销……
直到找到解决方案,你想在afterFind回调中手动转换.使用schema(),您可以找到每个字段类型.
如果您在多个模型上使用它,请将其放入AppModel中.
你也可以写一个行为来干净利落地为你完成这项工作 – 所以你在每个模型中所要做的就是:
public $actsAs = array('CastConvert'); //name it whatever you like
你不想受影响的模特你就是不要附上它.
小心相关记录.这可能也是对蛋糕的限制.它通常只触发主记录的回调.在这些情况下,您可能希望手动触发行为回调.
如果您将其命名为cast(),则可以直接在模型上访问它:
$this->Primary-Secondary->cast()
或某事
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。