我正在尝试使我的口才模型发挥作用。我当前的数据库是这样的:
棘手的部分是,对于给定的环境和项目,可以有多个访问权限。所以可能我有这样的事情:
请注意,这两行具有相同的environment_id和project_id。
问题1:我的数据库设计合理吗?还是我应该创建一个三向数据透视表(id,project_id,environment_id,access_id)?
问题2::如何在我的项目模型中获取与项目相关的所有环境?现在看起来像这样:
class Project extends Model
{
public function accesses(){
return $this->hasMany('App\Models\Access', 'project_id');
}
public function environments(){
// The missing part i can't get to work :(
}
}
答案 0 :(得分:0)
我建议您为访问添加一个单独的表,这样您就不会有重复的数据或密码重置问题。
如果只想将所有环境链接到一个项目,则需要与数据透视表建立多对多或一对多关系。
public function environments()
{
return $this->belongsToMany('environment', 'environment_project');
// the first argument is the model you link to, the second the pivot table
}
型号:
Environment: id, name
Project: id, name
Environment_project:id, environment_id, project_id, access_id
Access: id, username, password
修改,在数据透视表上访问
public function environments()
{
return $this->belongsToMany('environment', 'environment_project')->withPivot('username', 'password');
//now you can do project::find(1)->environments->pivot->username
}