2016-04-15 104 views
0

我有以下情况:Laravel - 用模型中的hasMany计数选项

我有一些问题,此问题有可能的答案。我想指出每个问题每次回答多少次。

为此,我有3个表:

  • 问题
  • 解答
  • Answers_questions

Answers_questions我有这样的关系:

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

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

你可以尝试执行count方法: $ questions = $ answers_questions-> groupBy('question_id') - > get() - > count(); –

+0

谢谢维尼修斯。我会试试看,然后回来告诉它是否有效。 –