1. 程式人生 > >laravel多條件查詢(and,or巢狀查詢)

laravel多條件查詢(and,or巢狀查詢)

說明

在日常開發中,經常會需要寫多條件的資料庫查詢語句。在使用框架的情況下,單純使用原生sql查詢會導致結果與model無法對應,也就沒有辦法使用框架的一些便利的方法對結果集進行處理。尤其是laravel提供了非常多的對查詢結果集進行處理的工具。所以最好是使用laravel提供的ORM進行多條件的資料庫查詢。

問題

比如需要執行這樣一條sql語句

select 
    * 
from 
    homework 
where 
    (id between 1 and 10 or id between 50 and 70) 
    and complete = 1 
    and (title like
'a%' or title like 'b%');

解決方式

$homeworks = Homework::where(function ($query) {
    $query->whereBetween('id', [1, 10])
          ->orWhereBetween('id', [50, 70]);
})->where('complete', 1)
->where(function ($query) {
    $query->where('title', 'like', 'a%')
          ->orWhere('title'
, 'like', 'b%'); })->get();

總結

  1. 使用ORM查詢資料可以得到model資料集,能更方便的處理資料。
  2. laravel的where方法使用閉包可以有效的構建巢狀的where子句(在這裡,使用where的閉包相當於在構建sql的時候加一個括號