【Laravel 8】group_idとgroupnameの二つのカラムに一致したユーザーを抽出したい
解決したいこと
前提として会員制掲示板は機能しており、全員の一覧はできております。
グループIDは自由に決められますので、例えばグループID1のグループAのユーザーAとユーザーBはグループID1のグループAのユーザーAとユーザーBの投稿しか見れません。グループID1のグループBのユーザーCとユーザーDはグループID1のグループBのユーザーCとユーザーDの投稿しか見れません。グループID2のグループCのユーザーEとユーザーFはグループID2のグループCのユーザーEとユーザーFの投稿しか見れません。というようにしたいです。
グループID(group_id)とグループ名(groupname)二つのカラムに一致したユーザーのみを抽出するにはどこを修正すればよいかご教授いただますでしょうか。
お手数をおかけしますが、よろしくお願いいたします。
発生している問題・エラー
二つのカラムに一致したユーザーを抽出できていない
問題コード
➀
$user=auth()->user();
$groupuser=auth()->user()->group_id;
$grouppostuser=auth()->user()->groupname;
⓶
$users=User::query()->get();
foreach($users as $user){
$id = $user->id;
}
ER図
該当するソースコード
Controller.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 index()
{
$user=auth()->user();
$groupuser=auth()->user()->group_id;
$grouppostuser=auth()->user()->groupname;
$posts=Post::where('group_id', $groupuser)->where('groupname', $grouppostuser)->orderBy('created_at', 'desc')->paginate(10);
return view('grouppost', compact('posts', 'user'));
}
public function foods()
{
$users=User::query()->get();
foreach($users as $user){
$id = $user->id;
$PostsOisiCount[$id]=Post::where('user_id', $id)->count();
}
return view('foods', compact('users', 'PostsOisiCount'));
}
}
grouppostBlade.php
@foreach ($posts as $post)
<div class="card-body">
<p>{{($post->body)}}</p>
</div>
@endforeach
foodsBlade.php
@foreach($users as $user)
<div class="card-body">
<p>
<?php
$id=$user->id;
echo PostsOisiCount[$id]
?>
/p>
</div>
@endforeach
自分で試したこと
Controller.phpにおいて下記の部分をたくさん書き換えては試したのですが、うまくいっておりません。
➀
$user=auth()->user();
$groupuser=auth()->user()->group_id;
$grouppostuser=auth()->user()->groupname;
⓶
$users=User::query()->get();
foreach($users as $user){
$id = $user->id;
}
0