0
これは私の現在のQBです。laravel複数選択文がお互いを上書きする
$institutes = count($request->input("selected_institutes"));
$courses = count($request->input("selected_courses"));
$institutes_data = $request->input("selected_institutes");
$courses_data = $request->input("selected_courses");
$search=DB::table('users as u');
if($institutes > 0 && $courses = 0){
$search=$search->select('u.id','u.first_name','u.profile_picture','inst.full_name')
->leftJoin('user_institutes as ins','ins.user_id','=','u.id')
->leftJoin('institutes as inst','inst.id','=','ins.institute_id');
}
else if($courses > 0 && $institutes = 0){
$search=$search->select('u.id','u.first_name','u.profile_picture','crse.full_name')
->leftJoin('user_courses as crs','crs.user_id','=','u.id')
->leftJoin('courses as crse','crse.id','=','crs.course_id');
}
else if($institutes > 0 && $courses > 0){
$search=$search->select('u.id','u.first_name','u.profile_picture','inst.full_name','crse.full_name')
->leftJoin('user_institutes as ins','ins.user_id','=','u.id')
->leftJoin('institutes as inst','inst.id','=','ins.institute_id')
->leftJoin('user_courses as crs','crs.user_id','=','u.id')
->leftJoin('courses as crse','crse.id','=','crs.course_id');
}
$search=$search->WhereNull('u.deleted_at');
for($i=0;$i<$institutes;$i++){
$search=$search->orWhere('inst.full_name','=',"`$institutes_data[$i]`");
}
for($i=0;$i<$courses;$i++){
$search=$search->orWhere('crse.full_name','=',"`$courses_data[$i]`");
}
$search=$search->get();
結果は、入力に基づいて、与えられたシナリオは $機関= 2と$コース= 2、 iがある場合、それは他の第二に落ちるようにしたい をプリントアウトする選択クエリです私は
select('u.id','u.first_name','u.profile_picture','inst.full_name','crse.full_name')
leftJoin 'user_institutes as ins' on 'ins.user_id''=''u.id'
leftJoin 'institutes as inst' on 'inst.id''=''ins.institute_id'
leftJoin 'user_courses as crs' on 'crs.user_id''=''u.id'
leftJoin 'courses as crse' on 'crse.id''=''crs.course_id'
where 'u.deleted_at' is null
and ('inst.full_name' = 'institutes 1'
or 'inst.full_name' = 'institutes 2')
and ('crse.full_name' = 'courses 1'
or 'crse.full_name' = 'courses 2'}
誰グラムすることができ、次のように実行するクエリは、このような状況に基づいて
'select * from `users` as `u` where `u`.`deleted_at` is null or `inst`.`full_name` = ?', array('`institutes 1`') or `inst`.`full_name` = ?', array('`institutes 2`')
以下のように示しますこのようなif else条件でwhere QBを構造化し、where句の変数入力用にforループを実行するようにしてください。 (私の文法にお詫び)
何が上書きされますか? –
特定の数の$ institutes = 2と$ courses = 2の場合は、もう1つ追加してください。 – Grynets
@ jedrzej.kurylo、select文が上書きされますが、私はQBを修正しようとしました。どのようなものを探しているのでしょうか? – kearn