Laravel Eloquent Where , orWhere 和 Find 在同一个 eloquent 查询中的问题
Problem with Laravel Eloquent Where , orWhere and Find in a same eloquent query
如何使用 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);
如何使用 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);