靈活構建和拼接Laravel的SQL語句

2021-08-04 09:50:28 字數 1376 閱讀 4462

在實際應用中,我們可能會遇到很多查詢條件互相制約的情況,例如,搜尋某某學校,某某班裡姓李的同學。

我們例如學校的變數叫做 $school,班級叫做$class,學生姓名叫做$name,那麼,我們的拼接語句這樣寫

[php]view plain

copy

print?

$str_school = ' ';  

$str_class = ' ';  

$str_name = ' ';  

$str_school = ' and school = '.$school; //別忘了and前面有小空格

$str_class = ' and class = '.$class;  

$str_name = ' and name = "%'.$name.'%"'; //這裡要注意,模糊查詢的時候,%要加引號的

然後我們拼接一下

[php]view plain

copy

print?

$students = members::whereraw('1=1'.$str_school.$str_class.$str_name)->paginate(30); //拼接小技巧,在and前加 1=1,即使你拼接的字串都是空,也不要緊。

然後老師又提出新要求了,我們要按照同學們的期末成績總和排序,這時候就用到selectraw

[php]view plain

copy

print?

$students = members::selectraw('members.*','(yuwen+shuxue+yingyu) as sumscore')  

->whereraw('1=1'.$str_school.$str_class.$str_name)  

->orderby('sumscore','desc')->paginate(30);  

然後老師又說,那你按照語數外分別給我排一下吧,這時不能每種情況都寫乙個查詢語句吧,這時要用到orderbyraw()

[php]view plain

copy

print?

$ord = '';  

if($ord == 1)...  

$students = members::selectraw('members.*','scores.*','(yuwen+shuxue+yingyu) as sumscore')  

->whereraw('1=1'.$str_school.$str_class.$str_name)  

->orderbyraw($ord)  

->paginate(30);  

構建靈活的介面

在設計支援各種螢幕尺寸的應用時,你可以在不同的布局配置中重複使用 fragment 以便根據相應的螢幕空間提供更出色的使用者體驗。例如,一次只顯示乙個 fragment 可能就很適合手機這種單窗格介面,但在平板電腦上,你可能需要設定並列的 fragment,因為平板電腦的螢幕尺寸較寬闊,可向使用者顯...

cJSON的構建和解析

一 cjson構建 define module num 3 int encode json cjson root cjson createobject 在根節點建立cjson物件 root cjson name list array cjson createarray 建立陣列物件 name lis...

線段樹的構建和查詢

本系列函式引數表示為 k 節點儲存區間 l,r 的和,查詢 修改的點為 x 查詢 修改的區間為 x,y 我們從線段樹的定義可以知道,k 節點儲存 ls k 和 rs k 兩節點的和。所以,我們採用遞迴構建線段樹。當區間的左端點與右端點重合時,即為葉子結點。非葉子結點在回溯中計算出。void buil...