gpt4 book ai didi

php - Eloquent hasManyThrough 也获取数据透视表记录

转载 作者:太空宇宙 更新时间:2023-11-03 11:56:04 26 4
gpt4 key购买 nike

我的用户模型中有以下关系

public function events($user_id)
{

return $this->find($user_id)->hasManyThrough('Event', 'Event_Member', 'user_id', 'id');
}

和三个表

用户

id|name|...
1 |bob |
2 |mike|

事件

id|name   |location
1 |meeting|office

事件成员

user_id|event_id|status
1 |1 |Owner
2 |1 |Guest

hasManyThrough 关系为我提供了事件表中的信息,但我还需要数据透视表中的状态信息,如何实现?

最佳答案

您所拥有的看起来像是多对多关系,而不是多对多关系。您有两个通过数据透视表连接的表,而不是三个父子孙表。

我强烈建议更改两个模型中的关系。在用户模型中,它看起来像这样:

public function events()
{
return $this->belongsToMany('Event', 'event_members');
}

请注意,数据透视表通常按字母顺序称为 model1_model2 - 即在本例中为 event_user。我假设您的数据透视表名为 event_members,如果不只是更改它的话。另请注意,我删除了 user_id,因为用户模型已经知道它正在使用哪个用户。

然后您可以轻松访问数据透视表,例如像这样:

foreach ($user->events as $event) {
echo $event->pivot->status;
}

关于php - Eloquent hasManyThrough 也获取数据透视表记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32551127/

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