gpt4 book ai didi

php - 如何在 laravel 中链接 Eloquent 关系?

转载 作者:可可西里 更新时间:2023-11-01 13:36:13 27 4
gpt4 key购买 nike

到目前为止,我将关系对象提取为数组,然后执行如下操作:

App\Model::find($id)

但是有没有办法做这样的事情:

Auth::user()->group()->members()

它一直工作到 Auth::user()->group 但没有进一步的链接。如果你做了什么,请帮忙。或者我只是新手。

最佳答案

您可以使用预先加载来加载用户的组,然后加载该组的所有成员。

$user = User::with(['group', 'group.members'])->find(1);

// OR if you already have a user object (Like when using the Auth facade)
$user = Auth::user()->load(['group', 'group.members']);

foreach ($user->group->members as $member) {
// Do something with a member
}

但是,如果您本质上想跳到结构的下一层,并获得与用户相关的所有成员,您可以使用 hasManyThrough 关系,因为用户有很多成员,通过一组。

// In your User model
public function members()
{
return $this->hasManyThrough(Member::class, Group::class);
}

这样你就可以简单地直接通过用户访问成员:

$members = Auth::user()->members;

Laravel 不会执行一个查询来访问用户的组,然后执行另一个查询来访问该组的成员,而是使用一个带有连接的查询来获取成员。

看一下 hasManyThrough 关系 here

关于php - 如何在 laravel 中链接 Eloquent 关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40057334/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com