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 包雄辩的关系的主要内容,如果未能解决你的问题,请参考以下文章

为啥 laravel 雄辩的关系返回空数组

雄辩的关系,模型的链接(Laravel 5.4)

Laravel 雄辩的一对一通过(级别/树)关系

Laravel - 雄辩的自我关系

Laravel - 节省雄辩的关系

laravel 雄辩的关系查询