Как получить лайки / антипатии из базы данных с помощью тернарного оператора в php laravel - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь получить количество likes и dislikes сообщения.

У меня есть следующая таблица в базе данных, в которой есть столбец like, который определяет, нравится или не нравится. если это 1, это означает like, если это zero, это означает dislike.

table

Задача :

Я пытаюсь count количество like(s) сообщения и затем показывать его для каждого сообщения, я пытаюсь добиться этого с помощью троичного оператора, но я получаю 1 like и 1 неприязнь к каждому сообщению, которое является неправильным согласно приведенным выше данным таблицы.

Есть что-то, что я делаю не так, потому что я думаю, что код должен работать.

Потому что для post_id 1 количество лайков должно быть 2 согласно таблице, но я получаю 1 лайк и 1 неприязнь для каждого поста.

Код Это код, который я пытаюсь получить число likes и dislikes

@if(count( $post->likes()->where('$post->like'==1) )>=1  )

   <small>{{ count($post->likes()->where('$post->like' ==1))>=1?count($post->likes()->where($post->like ==1)). ' Likes':count($post->likes()->where($post->like ==1)).'Dislike' }}</small>
   @else
                            <small>// similary do this for dislikes when like column in the above table is 0</small>

  @endif

                </small>

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

В вашем контроллере или модели ваш запрос должен быть таким, как показано ниже.Вам нужно опубликовать как или не так, чтобы сгруппировать по post_id и использовать случай, когда для вашего условия ....

DB::table('post')
  ->select('post_id',DB::raw('SUM(case when like = 1 then 1 else 0 end) as like_counts'),
                     DB::raw('SUM(case when like = 0 then 1 else 0 end) as dislike_counts')
  )
  ->groupBy('post_id')
  ->get();
0 голосов
/ 26 июня 2019

Вы можете использовать метод count и withCount из eloquent, чтобы упростить эту задачу.

Вы можете посчитать лайки и дислайки в вашем контроллере следующим образом:

$posts = App\Post::withCount([
    'likes' => function ($query) {
        $query->where('like', 1);
    },
   'likes as dislikes_count' => function ($query) {
        $query->where('like', 0);
    }
])->get();

Тогда вы можетеэто считается в вашем клинке как

Likes count: {{ $post->likes_count }}
Dislikes count: {{ $post->dislikes_count }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...