Laravel 9中如何查询status为1或2的数据?已实现status=1的逻辑
解决方案:查询status为1或2的账户数据
你可以通过以下两种简洁方式修改代码,实现查询status等于1或2的数据:
方法一:使用whereIn(推荐,适合固定多值匹配)
whereIn方法可直接指定字段的可选值列表,生成IN条件的SQL,代码简洁高效:
public function depositAccountIndex() { $userId = Auth::id(); return response()->json(Account::latest()->where('user', $userId)->whereIn('status', [1, 2])->get()); }
方法二:使用闭包包裹orWhere(适合复杂条件组合)
如果后续需要扩展status的匹配逻辑,可用闭包包裹orWhere,确保查询逻辑准确(避免与前面的user条件产生逻辑混乱):
public function depositAccountIndex() { $userId = Auth::id(); return response()->json(Account::latest()->where('user', $userId)->where(function ($query) { $query->where('status', 1)->orWhere('status', 2); })->get()); }
注:第二种方法生成的SQL为
WHERE user = ? AND (status = 1 OR status = 2),能精准保证用户匹配且status符合要求的逻辑。
内容的提问来源于stack exchange,提问作者Udayanga Amarasinghe
相关产品推荐
相关产品推荐

