->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)
Является частью запроса Propel, который я переношу из raw SQL. 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))
Как я могу избежать этого?
EDIT: Моя версия движка 1.7.0, а моя версия php – 5.4.9