【问题标题】:Laravel composer package eloquent relationshipsLaravel Composer 包雄辩的关系
【发布时间】: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

【问题讨论】:

    标签: laravel eloquent relationship


    【解决方案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 模型类。这是我试图解决的核心问题
    猜你喜欢
    • 2015-03-14
    • 2018-11-28
    • 2015-01-11
    • 2021-06-03
    • 2020-03-26
    • 1970-01-01
    相关资源
    最近更新 更多