中間テーブルに入っているデータをControllerから検索・抽出したいです。

実現したいこと

多人数チャット機能を作成しているのですが、room@showページでチャットを作成しているのですが、多人数チャットということでmemberという名前で中間テーブルを作成しまして、room@showメソッドでroom_idとroom->id、member_idとuser->idが一致したmember変数を作成しまして、showページでその変数が存在したらチャットを表示、無かったら「入室できていません」と表示するようにしたのですが、中間テーブルに無い新しく作ったアカウントでもチャットが表示されたので、controllerの記述またはshowページのifが機能していない可能性があるので原因を知りたいです。

発生している問題・エラーメッセージ

中間テーブルにないユーザーもチャットを閲覧できるようになっています。

該当のソースコード

roomデータベース

1Schema::create('rooms', function (Blueprint $table) { 2 $table->id(); 3 $table->string('name'); 4 $table->string('room_code'); 5 $table->string('room_password'); 6 $table->unsignedBigInteger('host_id')->constrained(); 7 $table->timestamps(); 8 });

memberテーブル

1public function up(): void 2 { 3 Schema::create('members', function (Blueprint $table) { 4 $table->id(); 5 $table->unsignedBigInteger('room_id')->constrained(); 6 $table->unsignedBigInteger('member_id')->constrained(); 7 $table->timestamps(); 8 }); 9 }

RoomController@show

1public function show($id) 2 { 3 $user = Auth::user(); 4 $room = Room::find($id); 5 $member = Member::where('room_id', '=', $room->id) 6 ->where('member_id', '=', $user->id); 7 $messages = Message::where('room_id', '=', $room->id); 8 return view('rooms/show', ['user'=>$user, 'room'=>$room, 'member'=>$member, 'messages'=>$messages]); 9 }

views/rooms/show

1<x-app-layout> 2 <x-slot name="header"> 3 <h2 class="font-semibold text-xl text-gray-800 leading-tight"> 4 {{ $room->name }} 5 </h2> 6 </x-slot> 7 @if($member) 8 <div class="romm-chat"> 9 <div class="room-chat-message"> 10 11 </div> 12 <div class=="room-chat-form"> 13 <form method="POST" action="{{ route('message.store') }}"> 14 @csrf 15 16 <!-- Name --> 17 <div> 18 <x-text-input id="content" class="block mt-1 w-full" type="text" name="content" :value="old('content')" required autofocus autocomplete="content" /> 19 <x-input-error :messages="$errors->get('content')" class="mt-2" /> 20 </div></br> 21 <input type="hidden" id="user_id" name="user_id" value="{{$user->id}}"> 22 <input type="hidden" id="room_id" name="room_id" value="{{$room->id}}"> 23 24 <div class="flex items-center justify-end mt-4"> 25 <x-primary-button class="ms-4"> 26 送信 27 </x-primary-button> 28 </div> 29 30 </form> 31 </div> 32 </div> 33 @else 34 入室許可を得ていません。 35 @endif 36</x-app-layout>

試したこと

controllerからのデータの検索方法を調べたのですが、whereが不適切なデータの検索の仕方だったりするでしょうか。

補足情報(FW/ツールのバージョンなど)

PHP8
Laravel10

コメントを投稿

0 コメント