iamdivine
@iamdivine

Как подсчитать кол-во символов через связь?

Первая - тема с инфой о названии датой создания
Вторя с комментариями. Через Has Many получаю комментарии к таблице через связь.
В таблице с комментариями хранится инфа о выборе ответа ( 1, 2 , 3 ) и сам текст ответа
Как через Has Many выводить инфу не о комментарии, а о количестве записей во второй таблице сгруппированных ответов, допустим Тема 1 надо вывести подсчет комментариев где есть 1, 2, 3
Как сейчас
[
    {
        "id": 1,
        "user_id": 1,
        "nickname": "dsfgdfgfg",
        "about": "dfsg",
        "real_name": "dsfg",
        "type": 1,
        "vkontakte": "dsfg",
        "forum_link": "dsfg",
        "created_at": "2023-03-06T22:49:18.000000Z",
        "updated_at": "2023-03-06T22:49:18.000000Z",
        "conv_vote": [
            {
                "id": 11,
                "user_id": 1,
                "vote_id": 1,
                "vote": 3,
                "vote_message": "f",
                "created_at": "2023-03-11T10:47:31.000000Z",
                "updated_at": "2023-03-11T10:47:34.000000Z"
            }
        ]
    },
    {
        "id": 2,
        "user_id": 1,
        "nickname": "dsgdsfg",
        "about": "dfgdsgf",
        "who_close": null,
        "type": 1,
        "vkontakte": "dfgdsgf",
        "forum_link": "dfgdsgf",
        "created_at": "2023-03-06T22:49:30.000000Z",
        "updated_at": "2023-03-06T22:49:30.000000Z",
        "conv_vote": [
            {
                "id": 10,
                "user_id": 1,
                "vote_id": 2,
                "vote": 3,
                "vote_message": null,
                "created_at": "2023-03-11T00:12:09.000000Z",
                "updated_at": "2023-03-11T00:12:12.000000Z"
            }
        ]
    }
]

Как надо
[
    {
        "id": 1,
        "user_id": 1,
        "nickname": "dsfgdfgfg",
        "about": "dfsg",
        "real_name": "dsfg",
        "type": 1,
        "vkontakte": "dsfg",
        "forum_link": "dsfg",
        "created_at": "2023-03-06T22:49:18.000000Z",
        "updated_at": "2023-03-06T22:49:18.000000Z",
        "conv_vote": [
            {
                "vote_yes": 4,
                "vote_no": 4,
                "vote_neutral": 2,
            }
        ]
    },
    {
        "id": 2,
        "user_id": 1,
        "nickname": "dsgdsfg",
        "about": "dfgdsgf",
        "who_close": null,
        "type": 1,
        "vkontakte": "dfgdsgf",
        "forum_link": "dfgdsgf",
        "created_at": "2023-03-06T22:49:30.000000Z",
        "updated_at": "2023-03-06T22:49:30.000000Z",
        "conv_vote": [
            {
                "vote_yes": 10,
                "vote_no": 1,
                "vote_neutral": 2,
            }
        ]
    }
]

Сама табличка
640e43fb16e96802782884.png
1, 2, 3 это варианты ответов
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
iMedved2009
@iMedved2009
Не люблю людей
Если MySQL
public function count_votes(){
         return $this->hasOne(Vote::class, 'user_id')->select(DB::raw('sum(IF(vote=1, 1, 0)) as vote_yes, sum(IF(vote=2, 1, 0)) as vote_no, sum(IF(vote=3, 1, 0)) as vote_net, user_id'))->groupBy('user_id');
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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