我有我的用户表,该用户表具有一个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)” 用户可以招募任意数量的人。
答案 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