2016-04-15 5 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

Спасибо Vinicius. Я попробую и вернусь, чтобы узнать, сработало ли это. –

Смежные вопросы