iamdivine
@iamdivine

Как подсчитать кол-во записей в отношении?

Есть 2 таблицы. В 1 содержится само голосование, а в другой уже статистика голосов
61a74905754c0857776416.png
Как можно подсчитать кол-во agree/disagree/neutral в связи conv_vote?
Код который пока что есть
public function convVote() {
        return $this->hasMany(conv_voting::class, 'conv_id');
    }

    public function countVoteStats($count_id) {
        return self::find($count_id)->with('convVote')->get();
    }
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
public function countVoteStats($count_id) {
    $model = self::find($count_id);

    return [
        'agree' => $model->convVote->sum('agree'),
        'disagree' => $model->convVote->sum('disagree'),
        'neutral' => $model->convVote->sum('neutral'),
    ];
}


Или тремя отдельными запросами, зато без загрузки лишних полей и сущностей:
public function countVoteStats($count_id) {
    $query = conv_voting::where('conv_id', $count_id);

    return [
        'agree' => $query->sum('agree'),
        'disagree' => $query->sum('disagree'),
        'neutral' => $query->sum('neutral'),
    ];
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы