2016-09-10 9 views
1

私はコントローラ内にプライベートメソッドを持っていますが、メソッドを実行してブラウザの結果をエコーアウトしようとすると、それはただ死ぬだけです。私は下部にプロファイラーのない白い画面が表示され、error_logには何も表示されません。このDateTimeオブジェクトを自分のクエリで機能させるにはどうすればよいですか?

これは私の完全な方法です。 "hello"はエコーアウトしないので、クエリで死ぬように見えます。また、テーブルの 'created'フィールドはdatetime型です。

private function garbageCollect() 
{ 
    $em = $this->getDoctrine()->getManager(); 
    $dql = 'SELECT r FROM AppBundle:MyEntity r WHERE r.created < :created'; 

    $created = new \DateTime('-50 days'); 
    $result = $em->createQuery($dql) 
     ->setParameters(array('created' => $created->format('Y-m-d'))) 
     ->getResult(); 
    echo "hello"; die; // it never echoes this out so it fails above 

    ... // more code here excluded 

    return true; 
} 

私は間違っていますか?

+0

UPDATE:私のログファイルは、WHERE句として次のものを表示します。WHERE r0_.created <? ["2016-07-22"] [] – pogeybait

+0

UPDATE 2:パラメータを: - > setParameters(array( 'created' => new \ DateTime())に変更すると、6秒間の試行後もページが消滅しますクエリを実行します。まだ出力のない白いページを取得していますが、HTMLはありません。ログファイルはまだ空です。 Symfonyのdev.logは、phpmyadminで正常に実行されるクエリを表示します。作成されたフィールドを 'id' <:idのように変更し、idの整数をparamsに入れると、クエリは細かく実行され、ページ出力が実行されます。 WTH? – pogeybait

答えて

0

日付オブジェクトを文字列として書式設定する必要はありません。作成された名前のフィールドが教義のDateTimeのように定義されている場合は、単に行うことができます:

$created = new \DateTime('-50 days'); 
    $result = $em->createQuery($dql) 
     ->setParameters(array('created' => $created)) 
     ->getResult(); 

・ホープこのヘルプを見たりこれについてコメントするには時間がかかったし、私はあなたがかかった時間に感謝みんなに申し訳

+0

- > setParameters(array( 'created' => new \ DateTime())にパラメータを変更しても、出力がなくても6秒後にページが消滅します。 – pogeybait

0

。 symfonyはPHPに割り当てられたすべてのメモリを消費していたので、かなり増やさなければならなかったようです。今それは正常に動作しているようだ。テーブルはかなり大きかったようです。ありがとう!

関連する問題