如何使用Laravel Eloquent编写此查询"SELECT * FROM links WHERE (user_id = 1 OR user_ip = '127.0.0.1') AND id = 53 LIMIT 1"
我写了这个:'
$link = Link::query()
->where('user_id', Auth::id())
->orWhere('user_ip', request()->ip())
->with('clicks')
->findOrFail($id);
这个的SQL版本是:"SELECT * FROM links WHERE user_id = 1 OR user_ip = '127.0.0.1' AND id = 53 LIMIT 1"
;
它总是显示意想不到的结果,比如:它每次显示id 51的结果,即使id为52、53、54,但显示id 51的结果。
谢谢塔
传递闭包给where
时,可以对条件进行分组。
$link = Link::query()
->where(function ($query) {
$query->where('user_id', Auth::id())
->orWhere('user_ip', request()->ip())
})
->with('clicks')
->findOrFail($id);