You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel后端:如何实现多WHERE条件的分类数据查询(含指定ID)

正确实现方式

方法1:使用whereIn(推荐)

这是最简洁高效的写法,直接指定user_id需要匹配的取值数组:

public function get_categories()
{
    $user_id = auth()->user()->id;
    $categories = Category::whereIn('user_id', [$user_id, 0])->get();
    return $this->returnApiResponse(200, 'Categories fetched successfully', ['categories' => CategoryResource::collection($categories)]);
}

方法2:使用orWhere

如果需要更灵活的条件组合,可以用orWhere构建“或”逻辑:

public function get_categories()
{
    $user_id = auth()->user()->id;
    $categories = Category::where('user_id', $user_id)
                          ->orWhere('user_id', 0)
                          ->get();
    return $this->returnApiResponse(200, 'Categories fetched successfully', ['categories' => CategoryResource::collection($categories)]);
}

你之前写法的问题解析
  • 用+拼接两个集合:Laravel的Collection相加会以主键为依据去重,重复主键的记录会被覆盖,而且这种方式会发起两次数据库查询,效率远低于一次查询。
  • where('user_id', $user_id AND 0):这里的$user_id AND 0是PHP逻辑运算,结果为布尔值false,MySQL会将其转为0,最终查询的只有user_id=0的数据,完全没包含当前用户的ID,不符合需求。

内容的提问来源于stack exchange,提问作者user23730326

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:48:18