如何使用 cakePhp 4 实现一个带有条件和不同数据类型的 belongstTo

How to implement a belongstTo with cakePhp 4 with conditions and different data types

提问人:Juan I. Morales Pestana 提问时间:10/31/2022 最后编辑:marc_sJuan I. Morales Pestana 更新时间:12/1/2022 访问量:125

问:

我的设计有两个模型和.其中有一个整数字段,它作为外键传递给 varchar。ModelOneModelTwoModelOneModelTwo

cake 的先前版本(cakephp 2)的原始实现如下:

$this->belongsTo('ModelOne')
    ->setProperty('ModelOne')
    ->setClassName('ModelOnes')
    ->setConditions(['ModelOne.field_one::TEXT = ModelTwo.field_one AND ModelOne.field_two = ModelTwo.field_two']);

如您所见,强制转换是必需的,因为如果不使用它,则会引发数据类型不匹配异常。

当我这样使用它时,会抛出异常,因为似乎没有正确使用函数 CAST。当我将使用 ORM 提供的函数产生的方法 a 传递给方法时,也会发生同样的情况。setConditionQueryExpression$query->func()->CAST(...)

我怎样才能解决这个问题并正确指定 belongsTo 关系?

提前致谢!

我正在尝试使用数据类型转换和 SQL 函数转换或其他有效方法在 cakephp 4 中正确配置具有两种不同数据类型的 belongsTo 关系。

编辑后

$this->belongsTo('List')->setProperty('List')->setClassName('Lists')->setConditions(['List.code::TEXT = WhiteList.code AND List.list = WhiteList.list']);
php 加入 cakephp cast has-and-belongs-to-many

评论

0赞 ndm 10/31/2022
请出示你的实际代码,用虚拟名称替换可能会隐藏问题,尤其是在 CakePHP 的命名约定确实影响功能的地方!另外,请显示错误消息和相关的堆栈跟踪(您可以在日志文件中找到它已准备好复制和粘贴)。
0赞 Juan I. Morales Pestana 11/2/2022
准备好@ndm,我已经更新了我的问题。这非常相似。感谢您的评论
0赞 ndm 11/4/2022
我仍然错过了抛出的错误。虽然我可以想象它可能是什么,但我更愿意确定,这样我就不会给你任何错误的解决方案。

答: 暂无答案