我有两个表:
用户
id nickname
1 Mike
2 John
报告
id user_id target_id
1 1 2
2 2 1
MyController
public function violationView(User $user)
{
$vio = Report::all(); //this should be query, but I don't know how.
return view('admin.violation.vio_listpage')
->with('vio', $vio);
}
当我在刀片中显示$vio
时,它仅显示user_id
和target_id
。这些应该是用户的昵称,而不是ID号。
预期产量
ID user_name(user_id) username(target_id)
1 Mike John
2 John Mike
如果user_id
和target_id
,有人知道如何显示昵称吗?
答案 0 :(得分:2)
要通过用户ID获取用户名,您需要在查询中添加join。下面是该示例:-
$vio = Violation::join('users', function($q) {
$q->on('users.id', '=', 'report.user_id');
})
->join('users as target', function($q) {
$q->on('target.id', '=', 'report.target_id');
})
->selectRaw("report.*, users.nickname as user_name, target.nickname as target_user_name")
->get();
return view('admin.violation.vio_listpage')
->with('vio', $vio);
尝试一下。我认为这将帮助您实现目标。