Laravel Composer 包雄辩的关系
Posted
技术标签:
【中文标题】Laravel Composer 包雄辩的关系【英文标题】:Laravel composer package eloquent relationships 【发布时间】:2021-12-14 01:20:45 【问题描述】:我已经为 Laravel 8 创建了我的第一个 composer 包。它提供了一个用户组模型和一些路由。其中有几个是
POST | api/v1/usergroups | usergroups.create | ITGuy1990\Usergroups\Controllers\UsergroupController@create | api
GET|HEAD | api/v1/usergroups | usergroups.index | ITGuy1990\Usergroups\Controllers\UsergroupController@index | api
GET|HEAD | api/v1/usergroups/usergroup | usergroups.show | ITGuy1990\Usergroups\Controllers\UsergroupController@show | api
PATCH | api/v1/usergroups/usergroup | usergroups.update | ITGuy1990\Usergroups\Controllers\UsergroupController@update | api
DELETE | api/v1/usergroups/usergroup | usergroups.destroy | ITGuy1990\Usergroups\Controllers\UsergroupController@destroy | api
到目前为止一切正常。但现在是困难的部分。在包之外,在我的 Laravel 应用程序中,我将添加另一个 eloquent 模型。 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
【问题讨论】:
【参考方案1】:如果我理解正确,您是 Laravel 的新手。如果要显示连接到usergroups.show
路由上每个用户组的 todolist,可以通过建立模型关系来实现。如果每个组将有超过 1 个 todolist,并且每个 todolist 将属于超过 1 个组,则这是多对多关系:
在用户组模型中:
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
【讨论】:
我对 laravel 并不陌生。我知道如何建立关系。但正如我所说,我不能将 todolist 函数放在用户组模型中。因为那会使我的用户组作曲家包依赖于 todolist 模型类。这是我试图解决的核心问题以上是关于Laravel Composer 包雄辩的关系的主要内容,如果未能解决你的问题,请参考以下文章