我們例如學校的變量叫做 $school,班級叫做$class,學生姓名叫做$name,那麼,我們的拼接語句這樣寫
$str_school = ' ';
$str_class = ' ';
$str_name = ' ';
$str_school = ' and school = '.$school; //別忘了AND前面有小空格
$str_class = ' and class = '.$class;
$str_name = ' and name = "%'.$name.'%"'; //這裏要注意,模糊查詢的時候,%要加引號的
然後我們拼接一下
$students = Members::whereRaw('1=1'.$str_school.$str_class.$str_name)->paginate(30); //拼接小技巧,在and前加 1=1,即使你拼接的字符串都是空,也不要緊。
然後老師又提出新要求了,我們要按照同學們的期末成績總和排序,這時候就用到selectRaw
$students = Members::selectRaw('members.*','(yuwen+shuxue+yingyu) as sumscore')
->whereRaw('1=1'.$str_school.$str_class.$str_name)
->orderby('sumscore','desc')->paginate(30);
然後老師又說,那你按照語數外分別給我排一下吧,這時不能每種情況都寫一個查詢語句吧,這時要用到orderByRaw()
$ord = '';
if($ord == 1){
$ord = 'englishScore desc' //按英語降序
}...
$students = Members::selectRaw('members.*','scores.*','(yuwen+shuxue+yingyu) as sumscore')
->whereRaw('1=1'.$str_school.$str_class.$str_name)
->orderByRaw($ord)
->paginate(30);
寫本文的目的就是讓大家多使用拼接語句,你會發現你的水平有很大提升哦!