lundi 13 février 2017

laravel multiple select statement overwrite each other

this is my current QB.

$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();

the result is based on the input, given scenario is $institutes = 2 and $courses = 2, the select query which i printed out which i want it to be fall in 2nd else if is shown as below

'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`')

based on this situation the query i want to perform as below

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'}

can anyone guide me to structure my QB with these kind of if else condition and running for loop for the where clause variable input. (apology on my grammar)



from Newest questions tagged laravel-5 - Stack Overflow http://ift.tt/2kLLFc7
via IFTTT

Aucun commentaire:

Enregistrer un commentaire