Laravel-获取与同一模型的关系值

时间:2018-12-21 13:12:01

标签: php laravel

我有我的用户表,该用户表具有一个ID和一个come_from(id),它指向同一用户表的id列。

例如:

User
id, comes_from
1,  null
2,  1 

所以ID为2的用户来自ID为1的用户

现在我正在尝试构建它。

我想打印出一个表格,其中包含我拥有的所有用户以及另一个表格列,该列为我提供了该行用户来自的用户电子邮件。

我的用户模型:

public function recruited()
    {
        return self::findOrFail($this->comes_from)->pluck('email', 'id');
    }

现在在我的控制器中:

  public function recruitedUsersList()
    {
        return view('admin.recruitedUsers')->with('users', User::all()->with('recruited'));
    }

这告诉我“使用调用未定义的方法”

在我的刀片中:

@foreach($users as $user)
       <tr>
             <td>{{ $user->id }}</td>
             <td>{{ $user->email }}</td>
             <td>{{ $user->name }}</td>
             <td>{{ $user->recruited()->email }}</td>
       </tr>
@endforeach

嗯..这对我不起作用。有人有主意吗?

想法是:

一个用户只能来自一个人。他在注册自己时得到了“ comes_from(id)” 用户可以招募任意数量的人。

1 个答案:

答案 0 :(得分:0)

注意:我假设一个人可以在您的申请中招聘多于一个的人。所以我认为hasMany关系最能描述这一点。

更新您的User模型中的功能

public function recruited()
{
   return $this->hasMany('App\User', 'comes_from');
}

将您的控制器更新为此

public function recruitedUsersList()
{
    return view('admin.recruitedUsers')->with('users', User::with('recruited')->get());
}

将您的视图逻辑更新为此

@foreach($users as $user)
   <tr>
         <td>{{ $user->id }}</td>
         <td>{{ $user->email }}</td>
         <td>{{ $user->name }}</td>
         <td>
            @foreach($user->recruited as $recruit)
               {{ $recruit->email }}, 
            @endforeach
         </td>
   </tr>
@endforeach