CakePHP4 一か月以内のもを表示するようにしたい
解決したいこと
画面上に、登録した日付から二か月以内のものを表示させたいです。
AテーブルとBテーブルを結合させ、Bテーブルの開始日時から一か月以内のものを画面に表示させたいです。このとき、表示させる画面はAコントローラーの方で記述します。
解決方法を教えて下さい。
該当するソースコード
NewEmployeesController.php
$date = FrozenTime::now();
$this->paginate = [
'conditions' => ['IndividualProjects.contract_end_date <=' =>'+1 months'],
'conditions' => ['contract_end_date' =>],
contain' => [
'IndividualProjects' => function ($q) use ($date){
return $q
->where(['IndividualProjects.contract_end_date >=' => $date])
->order(['contract_start_date' => 'DESC']);
},
'IndividualProjects.Users','Users'],
$individualProjects = $this->IndividualProjects->find('all',[
'contain' => ['Projects', 'NewEmployees', 'Users'],]);
$newEmployees = $this->paginate($this->NewEmployees);
$this->set(compact('newEmployees','individualProjects'));
自分で試したこと
現在日時取得してますが、やりたいことを実現するために現在日時はいらないと考えているのですがどうでしょうか?
IndividualProjectsテーブルのcontract_end_dateに登録されえている日付から一か月以内と指定したいのですが、やり方が分かりません。上記のソースコードだとデータベースエラーになってしまいます。
まだ試している途中ですがクロノスタイム使った方が行けそうな気がしました…
アドバイスお願いします。
0