Doctrineで特定のタイプのアイテムをすべて取得する必要があります。ここでは、 'date'フィールドはDateTimeとして保存されています。つまり、私はPHP DateTimeオブジェクトも扱っています。SymfonyとDoctrineを使って月別にアイテムを取得する
私は全体的に2つのことを行う必要があります:月と年を指定した場合、その月と年のすべてのレコードを取得します。月と年が指定されていない場合は、今月のすべてのレコードを取得します。
私はDoctrineクエリビルダでBETWEEN文を使用してみましたが、DateTimeの時間部分に「今」というように作成されたPHP DateTimeオブジェクトから月と年をきれいに抽出する方法を理解できません。クエリに影響しません。また、月と年に影響を与えずに、DateTimeのDateの日の部分を01に設定する方法もありません。
これはかなり標準的な作業だと思っていましたが、解決策が見つかりませんでした。どんな助けもありがたい。
EDIT:
間の日付を取得するためのハック方法を見つけましたが、Doctrineは空の配列を返しています。次のコードを使用してください
/**
* Returns feed for month and year
*/
public function getMonthYearFeed($month, $year)
{
// Create two times at the start of this month and next month
$startDate = \DateTime::createFromFormat('d-n-Y', "01-".$month."-".$year);
$startDate->setTime(0, 0 ,0);
$endDate = \DateTime::createFromFormat('d-n-Y', "01-".($month+1)."-".$year);
$endDate->setTime(0, 0, 0);
$notes = $this->em->getRepository('AppBundle:Note')->createQueryBuilder('n')->where('n BETWEEN :start AND :end')->setParameter('start', $startDate->format('Y-m-d H:i:s'))->setParameter('end', $endDate->format('Y-m-d H:i:s'))->getQuery()->getResult();
return $notes;
}
あなたが試したことを示すコードを提供してください。 –