Laravel作曲家包雄辩的关系



我已经为Laravel 8创建了我的第一个composer包。它提供了一个用户组模型和一些路由。其中几个是

POST     | api/v1/usergroups             | usergroups.create   | ITGuy1990UsergroupsControllersUsergroupController@create   | api
GET|HEAD | api/v1/usergroups             | usergroups.index    | ITGuy1990UsergroupsControllersUsergroupController@index    | api
GET|HEAD | api/v1/usergroups/{usergroup} | usergroups.show     | ITGuy1990UsergroupsControllersUsergroupController@show     | api
PATCH    | api/v1/usergroups/{usergroup} | usergroups.update   | ITGuy1990UsergroupsControllersUsergroupController@update   | api
DELETE   | api/v1/usergroups/{usergroup} | usergroups.destroy  | ITGuy1990UsergroupsControllersUsergroupController@destroy  | api

到目前为止一切正常。现在是最难的部分。在包之外,在我的Laravel应用程序中,我将添加另一个雄辩的模型。一个TodoList模型。现在,我想做一个"一对多"UserGroup模型和TodoList模型之间的关系。我希望api/v1/usergroups/{usergroup}路由也返回与UserGroup模型相关联的TodoList模型。我认为我可能需要添加一个查询参数来选择要包含的关系,如下所示:http://localhost:8000/api/v1/usergroups/1?include=todolists

但是我如何使usergroups.show路由包含不属于usergroups包的关系呢?我可以,但不希望在usergroups包中包含todolist模型。因为我希望usergroups包只负责用户组,对吗?

谢谢你提前帮我。

ITGuy1990

如果我理解正确的话,您是Laravel的新手。如果您想要显示连接到usergroups.show路由上的每个用户组的todolist,您可以通过建立模型关系来实现。如果每个组有多于一个todolist,并且每个todolist属于多于一个组,这是一个多对多关系:

UserGroup模型:

public function todolist()
{
return $this->hasMany(ToDoList::class);
}

ToDoList模型:

public function usergroups()
{
return $this->belongsToMany(UserGroup::class);
}

在控制器:

$usergroups = UserGroup::with('todolist')->get();

在叶片:

@foreach($usergroups->todolist as $todolist)
{{$todolist->name}}
@endforeach

最新更新