Laravel belongsToMany多对多关联查询广告分类数据报错如何解决
报错原因
你的多对多关联定义参数错误,Laravel 的 belongsToMany 方法第一个参数需传入你要关联的最终目标模型类,你当前传入的是中间表对应的 AdvertCategories::class,导致框架生成查询SQL时错误将中间表作为目标关联表,触发查询逻辑错误。
解决方法
- 修改Adverts模型中的categories关联定义,将第一个参数替换为分类表对应的模型类:
public function categories(){ // 若你的分类模型采用Laravel常用的单数命名为Category,替换为Category::class即可 return $this->belongsToMany(Categories::class, 'advert_categories', 'advert_id', 'category_id'); }
- 若你的分类模型没有遵循Laravel默认的模型类对应复数表名规则,需在分类模型中手动指定对应表名:
// 写在Categories/Category模型类中 protected $table = 'categories';
- 调整后重新执行原有查询即可正常拉取数据:
Adverts::with(['categories'])->where("user_id", Auth::user()->id)->get();
内容的提问来源于stack exchange,提问作者insight web
相关产品推荐
相关产品推荐

