MySQL DATEDIFF 関数を使用するつもりでしたが、成功したことはありません。
ここのチュートリアルに従いました:
構成を適切に設定しました
$config = new Configuration;
$config->addCustomStringFunction('DATEDIFF', 'Project\ORM\MySql\DateDiff');
また、ファイルを正しい場所に配置しました。
現在、私のアンダーライブラリのパスは次のとおりです。
libraries
--Doctrine
--Project
----ORM
------MySql
---------DateDiff.php
--Doctrine.php
そして、DateDiff.php の私のコードは次のとおりです。
class DateDiff extends FunctionNode
{
// (1)
public $firstDateExpression = null;
public $secondDateExpression = null;
public function parse(\Doctrine\ORM\Query\Parser $parser)
{
$parser->match(Lexer::T_IDENTIFIER); // (2)
$parser->match(Lexer::T_OPEN_PARENTHESIS); // (3)
$this->firstDateExpression = $parser->ArithmeticPrimary(); // (4)
$parser->match(Lexer::T_COMMA); // (5)
$this->secondDateExpression = $parser->ArithmeticPrimary(); // (6)
$parser->match(Lexer::T_CLOSE_PARENTHESIS); // (3)
}
public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker)
{
return 'DATEDIFF(' .
$this->firstDateExpression->dispatch($sqlWalker) . ', ' .
$this->secondDateExpression->dispatch($sqlWalker) .
')'; // (7)
}
}
そして、これは私がそれを捕まえようとする方法です:
$this->doctrine->em->
createQuery('SELECT a FROM models\user_table a
WHERE a.user_id = '.$user_id.'
AND DATEDIFF(NOW(), a.created_at) < 1')
->getResult();
基本的にクックブックに書かれていることをコピーしただけです。
ただし、アプリケーションが出力を表示できないため、機能させることができません。エラーなし。そこで止まります。
問題がどこにあるのか誰にも分かりますか? パスの問題ですか?それとも私はそれを正しく呼んでいませんか?
アドバイスをいただければ幸いです。
ありがとう!