[英]Strange behaviour with Doctrine_Query in Doctrine 1.2
我有一个包含多个orWhere语句的查询。 PHP代码如下所示:
$firstDay = $params['datetimeForMonth']->format('Y-m-d');
$lastDay = $params['datetimeForMonth']->format('Y-m-t 23:59:59');
$whereStatement = "(s.level = ?
AND s.idForLevel IN (?)
AND s.startDatetime BETWEEN '$firstDay' AND '$lastDay')";
$q = Doctrine_Query::create()
->from('Mmb_Model_Schedule s')
->where($whereStatement, ['prefecture', $this->id])
->orWhere($whereStatement, ['district', $districtIds])
->orWhere($whereStatement, ['municipality', $municipalityIds])
->orWhere($whereStatement, ['workplace', $workplaceIds])
->orWhere($whereStatement, ['user', $userIds]);
变量$ districtIds,$ municipalityIds,$ workplaceIds和$ userIds都提前定义为逗号分隔的值。
该查询对每个级别(区域ID除外)都适用。 查询中不会返回任何级别为“区”的记录。
真正奇怪的是,如果我不使用绑定参数,而是插入以下代码,则一切正常:
->orWhere("s.level = 'district' AND s.idForLevel IN ($districtIds) AND s.startDatetime BETWEEN '$firstDay' AND '$lastDay'")
更令人气愤的是,如果我使用绑定参数,即使该查询本身作为单个where语句(不包括所有其他语句)单独完成,也不会给我任何帮助。
似乎还不够,我什至尝试将表从“ district”更改为“ prefDistrict”,以防万一单词“ district”引起了问题。 没有改变。
尽管我像直接输入时一样将EXACT SAME数据作为绑定参数插入,但行为却发生了巨大变化。 这到底是怎么回事?
我想说的是, $districtIds
var的值中一定有某些东西使Toctrine中的查询生成器崩溃。 您可以张贴这些值的样本吗?
另外,您是否看过了运行该理论的生成的SQL(拖尾SQL日志或挂接到preExecute事件)? 我很好奇看到这样的输出。
(这可能是一条评论,但是我的声誉还不够高;))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.