私は Zend Framework 2 で作業しており、Doctrine Query Language を使用しています。
ユーザー リスト ページに年齢のフィルターを追加する必要があります。データベースには、日付形式を使用してユーザーの生年月日を保存しました。where 条件を使用してフィルターを適用する方法を教えてください。
$repository = $this->entityManager->getRepository('User\Entity\User');
$query = $repository->createQueryBuilder('u');
$query->where("(DATE_DIFF(CURRENT_DATE(), u.birth_date)/365)=".$search_arr['age']);
このクエリは何も返しません。その理由は、mysqlDATEDIFF( CURRENT_DATE( ) , u.birth_date ) /365
で実行すると、10.29 などの浮動小数点数で年数が返されるためです。比較するには整数に変換する必要があります。Mysql はFLOOR関数を提供しますが、DQL では機能しません。
それに関して私を助けてください。