2

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 が null のようです。いつ、なぜこれが起こる可能性があるのか​​、誰か教えてもらえますか?

4

2 に答える 2

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();
于 2013-06-17T19:38:05.017 に答える
0

$query 変数をどのようにインスタンス化していますか? これをやろうとしていないのは確かですか:

  $query = PublicationQuery::create()

これ以上の情報がないと、この問題のトラブルシューティングが非常に難しくなります。さらにコードを提供してください。

于 2013-03-11T19:01:47.647 に答える