我遇到了Propel 1.6和MySQL数据库的这种情况:
$query->usePublicationQuery("pq");
$query->condition('c1', '(YEAR(`pq.PUBLISHED_DATE`)) = ?', "2013")
->condition('c2', '(MONTH(`pq.PUBLISHED_DATE`)) = ?', "03")
->condition('c3', '(DAY(`pq.PUBLISHED_DATE`)) = ?', "01")
->combine(array('c1', 'c2','c3'), 'and', 'c123');
$query->endUse();
mergeWith() - 在调用endUse() - 方法时出现错误。当Propel尝试在ModelCriteria.php中合并这样的查询时抛出它:
$primaryCriteria->mergeWith($this); // (line 941)
$ primaryCriteria似乎是null。任何人都可以告诉我,何时以及为什么会发生这种情况?
答案 0 :(得分:2)
需要注意的是,Propel的useQuery()和endUse()方法返回了新的查询,而不是更改当前的查询。因此,要么使用方法链接重写整个查询:
$query
->usePublicationQuery("pq")
->condition('c1', '(YEAR(`pq.PUBLISHED_DATE`)) = ?', "2013")
->condition('c2', '(MONTH(`pq.PUBLISHED_DATE`)) = ?', "03")
->condition('c3', '(DAY(`pq.PUBLISHED_DATE`)) = ?', "01")
->combine(array('c1', 'c2','c3'), 'and', 'c123')
->endUse();
......或类似的东西:
$query2 = $query->usePublicationQuery("pq");
$query2->condition('c1', '(YEAR(`pq.PUBLISHED_DATE`)) = ?', "2013")
->condition('c2', '(MONTH(`pq.PUBLISHED_DATE`)) = ?', "03")
->condition('c3', '(DAY(`pq.PUBLISHED_DATE`)) = ?', "01")
->combine(array('c1', 'c2','c3'), 'and', 'c123');
$query = $query2->endUse();
答案 1 :(得分:0)
如何实例化$ query变量?你确定你没有尝试这样做:
$query = PublicationQuery::create()
如果没有更多信息,请对此进行排查非常困难,请提供更多代码。