1
実際には、どのテーマやコースを選択しても検索したい質問を検索したいと思います。laravel 5のbelongsToMany関係で検索しています
削除した場合はwhereHas
から対象またはコースのいずれかが動作しますが、両方とも機能していません。
belongsToMany realtionshipで検索するためのより良いソリューションを提供してください。
私はQuestion
モデルクラスと質問表
class Question extends Model{
public function courses(){
return $this->belongsToMany('App\Models\Course','course_questions');
}
public function subjects(){
return $this->belongsToMany('App\Models\Subject','subject_questions');
}
}
を持っており、私のsearchController
public function index(Request $request){
$questions = Question::with(['user','courses','branches','subjects','years','universities','question_type'])
->where("status","=",1)
->where(function($query) use($request){
$q = $request->q;
if(isset($q) && !is_null($q)){
$query->where("question","LIKE","%$q%");
}
})
->whereHas('subjects',function($query) use($request){
$subjects = $request->subject;
if(isset($subjects)){
$_subjects = explode(" ",$subjects);
$query->whereIn("slug",$_subjects)
->orWhereIn("subject_name",$_subjects);
}
})
->whereHas('courses',function($query) use($request){
$course = $request->course;
if(isset($course)){
$_course = explode(" ",$course);
$query->whereIn("slug",$_course)
->orWhereIn("course",$_course);
}
})
->paginate();
if($request->ajax()){
$returnHTML = view('questions.question_list')->with('questions', $questions)->render();
return response()->json(array('success' => true, 'pageContent'=>$returnHTML));
}
おはよう、ありがとうございます。私はそれに多くの時間を費やしましたが、今は魔法のように働いています。 。しかし、どのように働いて、説明してください。 – Jitendra
@Jeetendra説明はあまりありません。いくつかのフィルターが設定されている場合にのみ、条件に条件を追加する必要があります。コードでは、 'whereHas'を使用していくつかの条件を追加しました。ユーザがフィルタをいっぱいに入れずに結果が得られない場合でも、 –