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

Laravel查询未分配到指定分类的产品实现方法求助

问题分析

  • 你调用get()方法获取的$assignations是模型集合,不是单个模型对象,直接访问$assignations->id属于非法操作,会抛出错误
  • 子查询逻辑错误:你不需要再查询variants表,只需要从assignations表中取出指定分类下已分配的产品ID即可

正确实现代码

// 直接用子查询实现,性能更优,只执行一次SQL查询
$no_variants_assigned = Variant::whereNotIn('id', function ($query) use ($id) {
    $query->select('product_id') // 此处替换为你assignations表中关联产品ID的实际字段名
          ->from('assignations')
          ->where('category_id', $id);
})->orderBy('id_product', 'Asc')->get();

// 如果你同时需要拿到当前分类下已分配的分配记录,可以用以下写法
$assignations = Assignation::where('category_id', $id)->orderBy('position', 'Asc')->get();
$assignedIds = $assignations->pluck('product_id'); // 同上替换为实际关联字段名
$no_variants_assigned = Variant::whereNotIn('id', $assignedIds)
    ->orderBy('id_product', 'Asc')
    ->get();

补充说明

如果你的assignations表关联的产品ID字段名不是product_id,将代码中的对应字段替换为你实际的字段名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:39:05