php - Laravel - 获取与同一模型的关系值
问题描述
我有我的用户表,它有一个 ID 和一个 comes_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)”用户可以招募任意数量的人。
解决方案
注意:我假设一个人可以在您的申请中招募多个其他人。所以我认为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
推荐阅读
- asynchronous - 从异步回调中返回一个值 (Node.JS)
- javascript - 为函数的每个实例创建唯一的存储值
- ruby-on-rails - Rails 6:当我的模型在验证期间查询其他几个表时,如何处理并发?
- python - 如何自定义 matplotlib 中的误差线
- php - Mention.js 不会停止向用户推荐
- go - 如何升级 golang 中的其中一个子包?
- javascript - 按类名循环遍历元素,单击数组中的任何元素,但只影响单击的元素?
- sql - 注释乘法与过滤多对多关系
- css - 如何为多个#id创建 ::before
- c - 类型从 char* 转换为 int*