Laravel多对多关联调用出现undefined relationship错误如何解决
问题解决方案
错误1:多对多关联外键参数顺序错误
Laravel 中 belongsToMany 方法的参数规则为:belongsToMany(关联模型类, 中间表名, 当前模型在中间表的外键, 关联模型在中间表的外键)
你两处关联的外键参数均写反,依次修改即可:
- 修改
User模型的registered_events关联:
// 原错误写法 // return $this->belongsToMany(Event::class, 'event_user', 'event_id', 'user_id'); // 修正后写法 return $this->belongsToMany(Event::class, 'event_user', 'user_id', 'event_id');
- 修改
Event模型的registered_users关联:
// 原错误写法 // return $this->belongsToMany(User::class, 'event_user', 'user_id', 'event_id')->withPivot('id', 'user_status', 'eventmanager', 'created_at', 'updated_at'); // 修正后写法 return $this->belongsToMany(User::class, 'event_user', 'event_id', 'user_id')->withPivot('id', 'user_status', 'eventmanager', 'created_at', 'updated_at');
错误2:关联不存在报错处理
如果确认关联方法已正确定义仍抛出RelationNotFoundException,执行以下命令清理 Laravel 编译缓存即可:
php artisan clear-compiled php artisan cache:clear php artisan config:clear
完成上述修改后即可正常执行两个关联查询逻辑。
内容的提问来源于stack exchange,提问作者Lukas Komar
相关产品推荐
相关产品推荐

