我想将我的Users Table和AcitvationCodes表结合起来,并在一个foreach循环中显示它们。我的ActivationCodes表有一个外键' user_id'。这是我的代码:
$data['codes'] = ActivationCode::orderBy('id','desc')->paginate(15);
在我的foreach循环中,我添加了这个并且它不起作用。请帮忙。
@foreach($codes as $p)
@php $rr = \App\User::where('id',$p->user_id)->first(); @endphp
<td>{{$rr->name}} </td>
@endforeach
答案 0 :(得分:0)
您正在尝试加载没有任何用户附加where('user_id', 0)
的激活码。然后,您尝试获取代码的用户User::where('id', $p->user_id)
。当然,这不起作用,因为您加载的代码没有任何用户。您可以使用其用户加载所有激活码:
ActivationCode::with('user')->latest('id')->paginate(15);
然后显示相关用户而不对每个用户执行新查询:
@foreach($codes as $code)
<td>{{ $code->user->name }}</td>
@endforeach
要使其正常工作,您需要定义此关系:
public function user()
{
return $this->belongsTo(User::class);
}