多个表之间的Laravel关系失败

时间:2018-05-16 06:15:07

标签: php laravel

我有以下表格

表格检查

 id
 name ...

表格设置类型

id
name
level //references id on table check

表格设置

type, //references type on table setting type
name
value

所以基本上我想用设置

返回所有支票

所以我的模特

1.检查模型//引用表检查

    public function settingsval(){
       return $this->hasMany('App\AppSettingTypes','name','name.setting');
   }

在我的AppSettingTypes //引用表设置类型

    public function settings(){
       return $this->hasMany('App\AppSetting','id','type');
   }

我的控制器就是这么做

CheckModel::with('settingsval')

但每次设置数组都是空的,即使有数据

可能出现什么问题?

2 个答案:

答案 0 :(得分:2)

如果表level的{​​{1}}列包含对检查表的引用,那么您的映射将类似于

setting type

hasMany定义

public function settingsval(){
   return $this->hasMany('App\AppSettingTypes','level','id');
}

如果您可以为hasMany($related, $foreignKey, $localKey) 而不是check_id等相关列使用更好的命名约定,那就更好了

答案 1 :(得分:0)

如果表level的{​​{1}}列包含对检查表的引用,那么您的映射将是

setting type

在表格public function settingsval(){ return $this->belongsTo('YourCheckModelname','level'); } 中,模型的映射类似于

check

同样明智的是,如果表public function settingtype(){ return $this->hasMany(\App\AppSettingTypes::class); } 的{​​{1}}列包含对设置类型表的引用,那么您的映射就像

type

setting模型中的映射类似

 public function settings(){
       return $this->belongsTo('YourSettingTypeModelname','type');
    }

然后你必须在控制器中

setting type