Laravel Eloquent Where, orWhere and Find在同一个Eloquent查询中的问题.&



如何使用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);

相关内容

  • 没有找到相关文章

最新更新