在laravel中组合2个表格

在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); 
} 
+0

调用模型[App \ ActivationCode]上的未定义关系[用户]。我得到这个错误 –

+1

@RonaldTorres你必须定义一个关系。我假定你已经拥有了它。我已经更新了答案。 –

+1

明白了。非常感谢 –