質問に対する「答え」に対して「いいね」する機能を設置しています。
ユーザが、どの「答え」に「いいね」したのかは確認できますが、
「答え」の横に、何人の人が「いいね」したのかカウント表示させたいです。
answersテーブル
id
user_id
theme_id
kotae
user_favoriteテーブル(中間テーブル)
id
user_id
favorite_id
UsersController.php⇩
public function myfavorites($id) { $data = []; $user = User::find($id); $theme = Theme::find($id); $myfavorites = $user->myfavorites()->orderBy('created_at', 'desc')->paginate(10); $favorite_counts = \DB::table('user_favorite') ->select(\DB::raw('favorite_id, count(*) as count')) ->groupBy('favorite_id') ->get(); $data = [ 'user' => $user, 'answers' => $myfavorites, 'theme' => $theme, ]; $data += $this->counts($user); return view('users.myfavorites', $data, [ 'favorite_counts' => $favorite_counts, ]); }
$favorite_countsで「答え」に対して何人「いいね」したかカウントしています。
VIEWで{{ $favorite_counts }}を記述すると、
answers.blade.php⇩(ul、div要素等は省いてます)
@if (count($answers) > 0) @foreach ($answers as $answer) <?php $theme = $answer->theme; ?> <?php $user = $answer->user; ?> {{ $theme->shitsumon}} {{ $answer->kotae}} @include('user_favorite.favorite_button', ['answer' => $answer]) {{ $favorite_counts }} @endforeach {!! $answers->render() !!} @endif
[{"favorite_id":1,"count":2},{"favorite_id":2,"count":2},{"favorite_id":3,"count":1},{"favorite_id":4,"count":1},{"favorite_id":5,"count":1},{"favorite_id":6,"count":1}]
このような表示になります。
ここから、"count": の数字のみを取り出したいのですが方法がわからなくて困っています。
@foreachのすぐ下で
<?php $favorite_counts = $answer->id; ?>としたり、いろいろ組んでみましたが、思うような結果が得られず投稿に至りました。
VIEW側でどのようにコードを組めばうまく表示されますでしょうか、ご教授いただきたいです。
よろしくおねがいします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。