2016-04-15 5 views
0

私は以下のような状況があります:Laravel - モデルでhasManyを使用するオプションをカウントする

私はいくつかの質問があり、この質問には回答があります。私は、各質問ごとに各項目に何回答えられたのかを数えたいと思います。このため

私は3つのテーブルがあります。

public function question(){ 
    return $this->belongsTo('App\Question', question_id, 'id'); 
} 

  • 質問
  • は、私はこの関係を持っているAnswers_questions
  • Answers_questions

回答しますこの情報を取得するには

public function answers(){ 
    return $this->hasMany('App\Answers', 'question_id', 'question_id'); 
} 

は、私がこれを使用コントローラーで:ビューで

$answers_questions = new Answers_questions; 
$questions = $answers_questions->groupBy('question_id')->get(); 

:だから

@foreach($questions as $question) 

{{ $question->question }} 

    @foreach($question->answer as $answer) 
    Answer: {{ $answer->answer}} - **Count: ???** 

    @endforeach 
@endforeach 

を、どのように私はで表示するには、これをカウントすることができます私の見解?私はこれを試しました:

return $this->hasMany('App\Answers', 'question_id', 'question_id')->selectRaw('*, count(answer) as count'); 

各質問のビューでは、最初の答えがカウントで示されました。

解決方法

ありがとうございました!

答えて

0

私はあなたが例えばこれをやろうとすることができると思います。

public function countAnswers(){ 
    return count($this->hasMany('App\Answers', 'question_id', 'question_id')); 
} 

し、ビューにあなたのリダイレクトに:

public function redirectToView(){ 
    $answers = countAnswers(); 
    return view('your.view.file' , compact('answers')); 
} 
+0

私はこれを試してみましたが、それでも最初の答えを数えます。 –

+0

あなたはカウントメソッドを実装しようとすることができます: $ questions = $ answers_questions-> groupBy( '​​question_id') - > get() - > count(); –

+0

おかげでVinicius。私はそれを試して、それが働いたかどうかを知るために戻ってきます。 –

関連する問題