我在使用 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();
调用 endUse() 方法时会出现 mergeWith() 错误。当 Propel 尝试合并 ModelCriteria.php 中的查询时会抛出此错误:
$primaryCriteria->mergeWith($this); // (line 941)
$primaryCriteria 似乎为空。谁能告诉我,什么时候以及为什么会发生这种情况?
最佳答案
需要注意的是,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();
关于propel - 使用相关查询时为"Call to a member function mergeWith() on a non-object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15335301/