Laravel雄辩的加入 [英] Laravel Eloquent Join

查看:68
本文介绍了Laravel雄辩的加入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个表,我想加入它们.我看过其他示例,只是想不通.

I have two tables and I want to join them. I have looked at other examples and just can't figure it out.

我的表格如下.

  • 俱乐部
    • id
    • 名称
    • Clubs
      • id
      • name
      • id
      • club_id
      • 名称

      俱乐部有很多成员
      成员​​属于俱乐部

      A club has many members
      A member belongs to a club

      我可以列出我的俱乐部,列出我的俱乐部之后,我可以列出该俱乐部的成员,但是我要列出的是所有成员并显示他们的俱乐部.所以我的输出是ID,名称,俱乐部名称

      I can list my clubs and after listing my clubs i can list the members of the club ok, but what I want to do is list all my members and show their club. So my output would be ID, Name, Club Name

      到目前为止,这是我的代码设置

      This is my code setup so far

      // clubs controller
      public function index()
      {
          $clubs = Club::all();
          return View::make('clubs.list')->with('clubs', $clubs);
      }
      
      public function show($id)
      {
          $club = Club::findOrFail($id);
          $members = $club->Members()->get();
          return View:: make('clubs.show')->with('club', $club)->('members', $members);
      }
      
      // club model
      class Club extends Eloquent
      {
          // each club has many members
          public function Members()
          {
              return $this->hasMany('Member');
          }
      }
      
      
      // members controller
      public function index()
      {
          $members = Member::all();
          return View::make('members.list')->with('members', $members);
      }
      
      // member model
      class Member extends Eloquent
      {
          // each member belongs to one club
          public function club()
          {
              return $this->belongsTo('Club');
          }
      }
      

      推荐答案

      在您的Member模型中声明以下关系方法:

      In your Member model declare the following relationship method:

      public function club()
      {
          return $this->belongsTo('Club');
      }
      

      因此,现在您可以使用以下方式查询所有成员及其Club信息:

      So now you can query all members with their Club info as:

      $members = Member::with('club')->get();
      

      在您的View中,当循环Members时,您可以尝试执行以下操作:

      In your View when looping the Members you may try something like this:

      @foreach($members as $member)
          {{ $member->name }}
          {{ $member->club->name }}
      @endforeach
      

      这不是Eloquent Join,但是使用它的关系技术,您可以如上所述进行操作,如果您想加入,则可以尝试如下操作:

      This is not Eloquent Join but using it's relationship technique you may do it as given above, if you want to join then you may try something like this:

      $members = Member::join('clubs', 'members.club_id', '=', 'clubs.id')
                       ->select('members.*', 'clubs.name as club_name')
                       ->get();
      

      在这种情况下,您可以像这样循环并使用Club信息;

      In this case, you may loop and use the Club info like this;

      @foreach($members as $member)
          {{ $member->name }}
          {{ $member->club_name }}
      @endforeach
      

      这篇关于Laravel雄辩的加入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆