在laravel中组合2个表

时间:2017-12-18 09:28:40

标签: jquery database laravel

我想将我的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

1 个答案:

答案 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);
}