Laravel のコントローラーでDBからの取得処理を書いています。
条件文など一続きで書くと成功するのですが、
$query 変数を使ってif文で分割しようとするとエラーになってしまいます。
■成功するコード
$studens = Student::with('classes') ->where('students.name', 'like', '%'.$student.name'%') ->whereHas('classes', function($query) use ($class_name) { $query->where('name', 'like', '%'.$class_name.'%'); })->get();
■失敗するコード
$query = Student::with('classes')::query(); if($student_name) { $query->where('students.name', 'like', '%'.$student_name.'%'); } if($class_name) { $query->whereHas('classes', function($query) use ($class_name) { $query->where('name', 'like', '%'.$class_name.'%'); }); } $students = $query->get();
冒頭のquery()
の部分で下記のエラーが出ます。
Call to undefined method Illuminate\Database\Eloquent\Builder::query()
・query()
とwith()
の順序を入れ替えてもうまくいきません。
・ただし、::with()
を省き、Student::query()
とすると当該行は通過できます。
with()
と query()
の併用ができないということなのでしょうか。
そもそも根本的な使い方が間違えているのでしょうか。
アドバイスをください。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー