close

轉自 https://www.weiyuan.com.tw/article/25

--

使用Laravel orwhere時若理想的SQL語法為下

SELECT *

FROM `article` 

WHERE `status` = 0 and (`title` like '%關鍵字%' or `keyword` like '%關鍵字%')

這時如果直接使用

$query->where('status', '=', 0);

$query->where('title', 'like', '%'.$search.'%');

$query->orwhere('keyword', 'like', '%'.$search.'%');

所產生的SQL為

SELECT *

FROM `article` 

WHERE `status` = 0 and `title` like '%關鍵字%' or `keyword` like '%關鍵字%'

缺少了括號

這時候要使用php閉包的方式

$query->where('status', '=', 0);

$query->where(function ($query) use ($search) {

    $query->where('title', 'like', '%'.$search.'%');

    $query->orwhere('keyword', 'like', '%'.$search.'%');
});

如此一來便可以達到指定括號位置的目的。

範例(二)
where status = 1 or status = 2

$query->where(function ($query) {

    $query->where('status', 1);

    $query->orwhere('status', 2);
});

 

--

全站熱搜
創作者介紹
創作者 dizzy03 的頭像
dizzy03

碎碎念

dizzy03 發表在 痞客邦 留言(0) 人氣()