Laravel-在模型中使用hasMany计数选项


Laravel - Count options with hasMany in a Model

我有以下情况:

我有一些问题,这些问题有可能的答案。我想数一下每个问题每个项目回答了多少次。

为此,我有3张表:

  • 问题
  • 答案
  • 回答_问题

回答问题中,我有这样的关系:

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');

然后在视图中为每个问题显示第一个答案并计数。

如何解决?

谢谢!!!

我想你可以尝试这样做,例如:

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'));
}