Laravel中ObjectType与GuestOptions关联无结果,求排查错误
问题排查与解决方法
模型类名不符合框架约定
Laravel默认遵循「单数模型名对应复数表名」的规则,你的数据库表是guest_options,对应的模型名应该是GuestOption(单数)而非GuestOptions(复数)。如果坚持使用GuestOptions作为模型名,需要在模型内显式指定表名:class GuestOptions extends Model { protected $table = 'guest_options'; }更推荐的做法是将模型名改为
GuestOption,贴合框架约定减少问题。关联关系需明确指定外键参数
当自定义透视表或模型名不遵循默认规则时,必须在belongsToMany方法中明确两个模型对应的外键。你的透视表字段是object_type_id和guest_option_id,关联方法应补充完整参数:public function options() { return $this->belongsToMany(GuestOptions::class, 'object_type_options', 'object_type_id', 'guest_option_id'); }第三个参数是当前模型(ObjectType)在透视表中的外键,第四个参数是关联模型(GuestOptions)在透视表中的外键。
检查透视表是否存在有效关联数据
确认object_type_options表中是否存在对应当前ObjectType实例的object_type_id与匹配的guest_option_id记录,若没有数据,调用关联自然返回空结果。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

