はじめに
ドキュメント読んでもよくわかんなかったことの我流メモです
whereHas()
Postが1つでも紐付いていて且つ、comments.content like "foo%"
のComment
$posts = Post::whereHas('comments', function ($query) {
$query->where('content', 'like', 'foo%');
})->get();
whereRaw()
where()でDB::raw()を使いたい時はwhereRaw()をつかう
$hoge->where(DB::raw('DATEDIFF(started_at, CURRENT_DATE)'))->get();
ってやると実際のクエリは
select * from `recruit_periods` where DATEDIFF(started_at, CURRENT_DATE()) = 0 is null
となっていて「??」と思って調べたらwhere()で生クエリを書きたい時はwhereRaw()でかくと出てきた
だから正解は
$hoge->whereRaw('DATEDIFF(started_at, CURRENT_DATE)')->get();
ちなみにwhereIn()を生クエリで書きたい時は
whereRaw('action IN ('create', 'delete')')
みたいに書く