2016-09-03 6 views
1

사용자와 함께 사용하여 데이터베이스 관련 쿼리 -> 많은 질문을 질문 있음 -> 가지고 많은 답을 나는 각 질문에 대한Laravel 5 :

$questions = Question::select('id','user_id', 
      'title','video','status','created_at') 
      ->where('user_id','=',$user->id) 
      ->where('status','>=','2') 
      ->with([ 
       'user' => function($query){ 
        $query->select('id','name','picture'); 
       }, 
       'answers' => function($query){ 
        $query->select('id','question_id','user_id','answer','created_at',DB::raw('count(*) as answer_count')) 
        ->orderBy('created_at','desc')->first(); 

       }, 
      ])->get(); 

여기를 최신 대답 한 사용자 질문 정보를 표시 할

각 질문에 대한 답을 얻지 못했습니다. 사용자가 제출 한 모든 질문에 대한 답변을 얻었습니다.

제발 도와 줄 수 있습니까? 방법 을 넣어 어디 답변에 대한 질문 아이디

예상 출력 다음과

User [id, name, and so on ] -> 
question [ 
    ['id', 'title' ..]->Answer['id','question_id',etc ], 
    ['id', 'title' ..]->Answer['id','question_id',etc ] 
] 

enter image description hereenter image description hereenter image description here 당신은 자신의 질문에 사용자를 가져 오는으로 시작해야

답변

0
$questions = Question::select('id','user_id','title','video','status','created_at')->with([ 
      'user' => function($query){ 
       $query->select('id','name','picture'); 
      } 
     ])->where('status','>=','2')->get(); 

     foreach($questions as $question) 
     { 
      $question_data[] = [ 
       'id' => $question->id, 
       'title' => $question->title, 
       'video' => $question->video, 
       'user_id' => $question->user_id, 
       'status' => $question->status, 
       'created_at' => $question->created_at->toDateTimeString(), 
       'thumbnail' => $question->thumbnail, 
       'user' => [ 
        'id' => $question->user->id, 
        'name' => $question->user->name, 
        'picture' => $question->user->picture 
       ], 
       'answers' => 
       $question->answers()->select('video','question_id','user_id','created_at','thumbnail') 
       ->with([ 
        'user' => function($query){ 
         $query->select('id','name','picture'); 
        } 
       ])->orderBy('created_at','desc')->first()]; 
     } 
1

그들에 대한 답변하지 질문 자체를 통해 예상 출력을 얻으십시오.

$user = User::select('id','name','picture')->with([ 
      'questions' => function($query){ 
       $query->select('id','user_id','title','video','status','created_at'); 
       $query->where('status','>=','2'); 
      }, 
      'questions.answers' => function($query){ 
       $query->select('id','question_id','user_id','answer','created_at',DB::raw('count(*) as answer_count')); 
       $query->orderBy('created_at','desc')->first(); 

      }, 
     ])->findOrFail($user_id); 

이제 다음과 같이 그들에게 주어진 사용자의 모든 질문에 대한 최신 답변을 얻을 수있을 것입니다 : 단지 전체

foreach($user->questions as $question) { 
    $answer = $question->answers; 
} 
+0

이 쿼리를 표시합니다 최신 대답 (사용자의 질문에 대한 최신 답변). 각 질문마다 최신 답변을 원합니다. – Suba

+0

잘 모르겠습니다. 위의 쿼리는 사용자 개체, 주어진 사용자의 모든 질문 및 각 질문에 대한 최신 대답을 제공합니다. 그게 네가 필요로하는 것이 아닌가? –

+0

예. 주어진 사용자의 모든 질문과 각각의 질문에 대한 최신 답변 – Suba