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

Laravel中如何查询无Orders表关联记录的所有用户数据

Laravel 获取无订单关联用户的实现方案

你已经在User模型中正确定义了与Order模型的hasMany关联,直接使用Laravel内置的关联查询方法即可实现需求,无需编写复杂原生SQL。

核心修改方式

将原有全量查询的User::all()替换为以下代码:

// 获取所有在Orders表中无对应关联记录的用户
$usersWithoutOrders = User::doesntHave('orders')->get();

方法说明

  • doesntHave('orders')会自动基于你定义的orders关联关系生成查询逻辑,筛选出不存在对应订单记录的用户数据,是Laravel官方推荐的关联不存在场景的查询写法。
  • 如果后续需要对关联订单加筛选条件,比如要筛选没有「已支付」订单的用户,可以使用whereDoesntHave方法自定义关联查询规则,示例:
// 扩展场景:筛选无已支付订单的用户
$usersWithoutPaidOrders = User::whereDoesntHave('orders', function ($query) {
    $query->where('pay_status', 1); // 假设pay_status=1代表已支付
})->get();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 04:01:14