douqin2108 2015-09-13 15:12
浏览 47
已采纳

Eloquent hasManyThrough也获得数据透视表记录

I have the following relation in my Users model

public function events($user_id)
{

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

And the three tables

User

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

Event

id|name   |location
1 |meeting|office

Event_Member

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

The hasManyThrough relationship gives me the information from the Event table, but I also need the status information from the pivot table, how can this be done?

  • 写回答

1条回答 默认 最新

  • doulin8374 2015-09-13 15:21
    关注

    What you have looks like a many-to-many relation rather than a has-many-through one. You have two tables connected through a pivot, not three parent-child-grandchild tables.

    I would strongly suggest changing the relationship in both models. In the user model, it would look like this:

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

    Note that a pivot table is typically called model1_model2 in alphabetical order - that is, event_user in this case. I assumed your pivot table is called event_members, if not just change it. Also note that I removed the user_id since the user model already knows which user it's using.

    Then you can access pivot data easily, e.g. like this:

    foreach ($user->events as $event) {
        echo $event->pivot->status;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 怎样才能让鼠标沿着线条的中心线轨迹移动
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?