Используя систему ORM Laravel Eloquent, я создал следующие модели:
/**
* @property int $id
*/
class Category extends Model
{
public function questions()
{
return $this->hasMany(Question::class);
}
}
/**
* @property int $id
* @property int $category_id
*/
class Question extends Model
{
public function answers()
{
return $this->hasMany(Answer::class);
}
}
/**
* @property int $id
* @property int $question_id
*/
class Answer extends Model {}
Сейчас я пытаюсь загрузить следующие значения:
- Все категории
- Количество вопросов по категории
- Количество ответов на вопросы по категории
Я решил 1 и 2, используя этот код:
$categories = Category
::withCount('questions')
->get();
$vars = ['categories' => $categories];
Для третьего значения я пробовал что-то вроде этого (что не работает):
$categories = Category
::withCount(['questions', 'questions as answered_questions' => function ($query) {
$query->select()
->from('answers')
->whereRaw('answers.question_id = questions.id');
}])
->get();
Как эффективно рассчитать количество вопросов, имеющих один или несколько ответов?