sam*_*toh 6 php mysql laravel laravel-5.3 laravel-eloquent
我的查询是这样的:
SELECT * FROM message WHERE (seller_id = 1 OR buyer_id = 3) AND deleted_by NOT LIKE '%1%'
Run Code Online (Sandbox Code Playgroud)
我想把它改成laravel雄辩
我试着这样:
Message::where('seller_id', auth()->user()->id)
->orWhere('buyer_id', auth()->user()->id)
->where('deleted_by', 'not like', '%'.auth()->user()->id.'%')
->get();
Run Code Online (Sandbox Code Playgroud)
但是,结果是这样的:
SELECT * FROM message WHERE seller_id = 1 OR buyer_id = 3 AND deleted_by NOT LIKE '%1%'
Run Code Online (Sandbox Code Playgroud)
似乎需要括号
如何在laravel雄辩中添加括号?
你需要把你的位置放在一个封闭处
Message::where(function($query){
$query->where('buyer_id', auth()->user()->id)
->orWhere('buyer_id', auth()->user()->id);
})
->where('deleted_by', 'not like', '%'.auth()->user()->id.'%')
->get();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,请使用闭包。
$userId = auth()->user()->id;
Message::where(function($q) use($userId){
$q->where('buyer_id', $userId)
->orWhere('buyer_id', $userId);
})
->where('deleted_by', 'not like', '%'.$userId.'%')
->get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1986 次 |
| 最近记录: |