微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

推动翻译错误的表名

如何解决推动翻译错误的表名

尝试使用此where()调用

->where(
    "LOWER(IF(location.Code IS NOT NULL,location.Code, origin.Code)) NOT IN ?",
    $not_in_old_job_search_array
)

您会注意到唯一的区别是我已将“代码”更改为“代码”。该where()方法需要列的PHP名称,而不是实际的列名称。别名与PHP名称一起存储,因此“代码”让其知道使用别名,而“代码”则不使用。

解决方法

->joinOrigin(‘origin’)
->joinLocation(‘location’,\Criteria::LEFT_JOIN)
->where(“LOWER(IF(location.code IS NOT NULL,location.code,origin.code)) NOT IN ?”,$not_in_old_job_search_array)

是我从原始SQL移植的Propel查询的一部分。locationorigin是指向同一表的两个外键(在schema.xml中这样声明)。Propel正确添加了联接:

INNER JOIN `idb_countries` `origin` 
ON (idb_ads.idb_countries_ididb_origin=origin.ididb_countries) 
LEFT JOIN `idb_countries` `location` 
ON (idb_ads.idb_countries_ididb_job_location=location.ididb_countries)

但是where子句如下所示:

LOWER(IF(idb_countries.code IS NOT NULL,idb_countries.code,idb_countries.code)) NOT IN (:p5,:p6,:p7))

如何避免这种情况?

编辑:我的propel版本是1.7.0,而我的php版本是5.4.9

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。