[英]How can I add brackets on the laravel eloquent? (Laravel 5.3)
My query is like this : 我的查询是这样的:
SELECT * FROM message WHERE (seller_id = 1 OR buyer_id = 3) AND deleted_by NOT LIKE '%1%'
I want change it to laravel eloquent 我想把它改成laravel雄辩
I try like this : 我试着这样:
Message::where('seller_id', auth()->user()->id)
->orWhere('buyer_id', auth()->user()->id)
->where('deleted_by', 'not like', '%'.auth()->user()->id.'%')
->get();
But, the result like this : 但是,结果是这样的:
SELECT * FROM message WHERE seller_id = 1 OR buyer_id = 3 AND deleted_by NOT LIKE '%1%'
Seems it need brackets 似乎需要括号
How can I add brackets on the laravel eloquent? 如何在laravel雄辩中添加括号?
You need to put your where in a closure 你需要把你的位置放在一个封闭处
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();
In such cases, use closure. 在这种情况下,使用闭包。
$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();
Try this : 尝试这个 :
Message::where(function ($query) {
$query->where('seller_id', auth()->user()->id)
->orWhere('buyer_id', auth()->user()->id);
})->where('deleted_by', 'not like', '%'.auth()->user()->id.'%')->get();
Message::where(function ($query) {
$query->where('seller_id', auth()->user()->id)
->orWhere('buyer_id', auth()->user()->id);
})
->where('deleted_by', 'not like', '%'.auth()->user()->id.'%')
->get();
Try this, may be your problem get resolved. 试试这个,可能是你的问题得到解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.