Laravel Count Несколько таблиц в Eloquent - PullRequest
2 голосов
/ 21 июня 2019

Я пытаюсь подсчитать связанные таблицы через модель, но не могу.

У меня есть таблица категорий, вопросов и ответов.

Я могу посчитать вопросы, связанные с категорией, но могуНе рассчитывать ответы из смежных категорий.Вы можете думать, что это форумная система.

Категория Модель

public function questions(){
    return $this->hasMany('App\Question','category_id','id');
}

Модель вопроса

public function answer()
{
    return $this->hasMany('App\Answer');
}

public function category()
{
    return $this->belongsTo('App\Category','category_id','id');
}

Модель ответа

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

Я могу посчитать вопросы для просмотра связанной категории Модель категории, как показано ниже

public function questioncount(){
    return $this->questions()->where('status',1)->count();
}

Ниже приведен пример подсчета ответов, но не повезло;

public function answercount()
{
    return $this->questions()
        ->leftJoin('answers','answers.question_id','=','questions.id')
        ->count();
}

Ответы [ 2 ]

1 голос
/ 21 июня 2019

Вы можете попробовать Имеет много сквозных отношений.

Итак, давайте определим отношение Имеет много сквозных в модели категории:

class Category
{
    public function answers()
    {
        return $this->hasManyThrough(Answer::class, Question::class);
    }
}

Тогда, конечно, вы можете получитьответы считаются так:

$question->answers()->count();
0 голосов
/ 21 июня 2019

Если вы хотите подсчитать количество результатов отношения без фактической их загрузки, вы можете использовать метод withCount, который поместит столбец {отношение} _count в получающиеся модели.Например:

 $answers = App\Question::withCount('answers')->get();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...