如何解决推动翻译错误的表名
尝试使用此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查询的一部分。location
和origin
是指向同一表的两个外键(在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 举报,一经查实,本站将立刻删除。