募集中

【Laravel 8】登録済みユーザー別のコメント抽出合計を表示させたいです。

PHP

2022年04月17日 21:04

解決したいこと
前提として会員制掲示板は機能しており、下記のようなコードで投稿内容にある「おいしい」や「まずい」などのキーワードの合計を取得して表示できておりますが、ログインしたユーザーのみならず、登録認証済みの全員のコメント抽出合計を一覧に表示するにはどこを修正すればよいかご教授いただますでしょうか。
お手数をおかけしますが、よろしくお願いいたします。

発生している問題・エラー
SQLSTATE[HY093]: Invalid parameter number

該当するソースコード
Web.php
Route::get('/myfood', 'HomeController@myfood')->name('home.myfood');
Route::get('/foods', 'HomeController@foods')->name('home.foods');

HomeController.php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;
use App\Models\Post;
use App\Models\Comment;
use Auth;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\Facades\DB;

class HomeController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function myfood()
{
$user = auth()->user()->id;
$myusers=User::where('id', $user)->get();
$PostsOisiCount = Post::where('user_id', $user)->where(function($query) {$query->where('body', 'like', '%delicious%')
->orWhere('body', 'like', '%bad%');})->count();
$PostsCount = Post::where('user_id', $user)->count();
return view('myfood', compact('user', 'myusers', 'PostsOisiCount', 'PostsCount'));
}
public function foods()
{
$users = User::all();
$PostsOisiCount = Post::where('body', 'like', '%delicious%')
->orWhere('body', 'like', '%bad%')
->count();
$PostsCount = Post::count();
return view('foods', compact('users', 'PostsOisiCount', 'PostsCount'));
}
}

myfoodBlade.php
<table>
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Name</th>
<th scope="col">Results</th>
</tr>
</thead>
<tbody>
@foreach($myusers as $myuser)
<tr>
<th>{{$myuser->id}}</th>
<td>{{$myuser->name}}</td>
<td>
($PostsOisiCount / $PostsCount ) * 100
</td>
</tr>
@endforeach
</tbody>
</table>

foodsBlade.php
<table>
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Name</th>
<th scope="col">Results</th>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<th>{{$user->id}}</th>
<td>{{$user->name}}</td>
<td>
($PostsOisiCount / $PostsCount ) * 100
</td>
</tr>
@endforeach
</tbody>
</table>

自分で試したこと
myfoodBlade.phpにおいて投稿内容にある「おいしい」や「まずい」などのキーワードの合計を取得して表示できておりますが、foodsBlade.phpにてログインしたユーザーのみならず、登録認証済みの全員のコメント抽出合計を一覧に表示するのにエラーになってしまいました。

回答可能なメンター

まだいません。