在laravel中组合2个表格

我想结合我的用户表和AcitvationCodes表并将它们显示在一个foreach循环中。我的ActivationCodes表有一个外键“user_id”。这里是我的代码:在laravel中组合2个表格

$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

回答:

您正在尝试加载没有任何用户连接的激活码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);

}

以上是 在laravel中组合2个表格 的全部内容, 来源链接: utcz.com/qa/262083.html

回到顶部