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

Laravel belongsToMany多对多关联查询广告分类数据报错如何解决

报错原因

你的多对多关联定义参数错误,Laravel 的 belongsToMany 方法第一个参数需传入你要关联的最终目标模型类,你当前传入的是中间表对应的 AdvertCategories::class,导致框架生成查询SQL时错误将中间表作为目标关联表,触发查询逻辑错误。

解决方法

  1. 修改Adverts模型中的categories关联定义,将第一个参数替换为分类表对应的模型类:
public function categories(){
    // 若你的分类模型采用Laravel常用的单数命名为Category,替换为Category::class即可
    return $this->belongsToMany(Categories::class, 'advert_categories', 'advert_id', 'category_id');
}
  1. 若你的分类模型没有遵循Laravel默认的模型类对应复数表名规则,需在分类模型中手动指定对应表名:
// 写在Categories/Category模型类中
protected $table = 'categories';
  1. 调整后重新执行原有查询即可正常拉取数据:
Adverts::with(['categories'])->where("user_id", Auth::user()->id)->get();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 11:12:01