2017-12-18 1 views
0

사용자 테이블과 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 

답변

0

where('user_id', 0)를 부착. 그런 다음 코드의 사용자 User::where('id', $p->user_id)을 얻으려고합니다. 물론로드 된 코드에 사용자가 없기 때문에이 방법은 작동하지 않습니다.

@foreach($codes as $code) 
    <td>{{ $code->user->name }}</td> 
@endforeach 

는 당신이이 관계를 정의해야 할 필요가 작동하도록하려면 각 사용자에 대한 새 쿼리를 실행하지 않고 관련 사용자를 표시 한 후

ActivationCode::with('user')->latest('id')->paginate(15); 

을 그리고 : 당신은 사용자와 모든 정품 인증 코드를로드 할 수 있습니다 :

public function user() 
{ 
    return $this->belongsTo(User::class); 
} 
+0

모델 [App \ ActivationCode]에서 정의되지 않은 관계 [사용자]를 호출하십시오. 이 오류가 발생했습니다 –

+1

@RonaldTorres 당신은 관계를 정의해야합니다. 당신이 이미 가지고 있다고 생각했습니다. 답변을 업데이트했습니다. –

+1

알았어. 정말 고맙습니다 –

관련 문제