リレーションで複数のidを収めるデータ型はありますか?

実現したいこと

多人数チャットを作成しているのですが、パスワード入力して入室ボタンをクリックした後にupdateメソッドで入力したユーザーのidが記載されるようにしているのですが、複数のidをmember_idに入れることが出来ません。
複数のidを入れるにはカラムのデータ型を変更する必要があるのでしょうか?

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

一旦、現状のコードで試したところ、更新されて追加ではなく上書きのようになりました。

該当のソースコード

Roomデータベース

1<?php 2 3use Illuminate\Database\Migrations\Migration; 4use Illuminate\Database\Schema\Blueprint; 5use Illuminate\Support\Facades\Schema; 6 7return new class extends Migration 8{ 9 /** 10 * Run the migrations. 11 */ 12 public function up(): void 13 { 14 Schema::create('rooms', function (Blueprint $table) { 15 $table->id(); 16 $table->string('name'); 17 $table->string('room_code'); 18 $table->string('room_password'); 19 $table->unsignedBigInteger('host_id')->constrained(); 20 $table->unsignedBigInteger('member_id')->constrained()->nullable(true); 21 $table->timestamps(); 22 }); 23 } 24 25 /** 26 * Reverse the migrations. 27 */ 28 public function down(): void 29 { 30 Schema::dropIfExists('rooms'); 31 } 32};

RoomController@update

1public function update(Request $request, $id) 2 { 3 $user = Auth::user(); 4 $room = Room::find($id); 5 $rooms = Room::all(); 6 if($room->room_password == $request->room_password){ 7 $room->member_id = $request->member_id; 8 $room->save(); 9 return view('rooms/show', ['room'=>$room, 'user'=>$user, 'rooms'=>$rooms])->with('flash_message', 'パスワード認証を完了しました'); 10 } 11 return view('rooms/index', ['user'=>$user, 'rooms'=>$rooms])->with('flash_message', 'パスワードが違います'); 12 }

rooms/index.php

1<x-app-layout> 2 <x-slot name="header"> 3 <h2 class="font-semibold text-xl text-gray-800 leading-tight"> 4 会議検索 5 </h2> 6 </x-slot> 7 {{$user}} 8 @foreach ($rooms as $room) 9 <a href="/room/{{$room['id']}}/" class="card-post-a"> 10 {{ $room->name }}</br> 11 {{ $room->room_code }}</br> 12 {{ $room->room_password }}</br> 13 {{ $room->host_id }}</br> 14 {{ $room->member_id }}</br> 15 </a> 16 <form action="/room/update/{{ $room->id }}" method="POST" enctype="multipart/form-data"> 17 @csrf 18 @method('PUT') 19 <div> 20 <input type="hidden" id="member_id" name="member_id" value="{{$user->id}}"> 21 <input type="text" name="room_password"> 22 </div> 23 <x-primary-button> 24 <input type="submit" value="入室"> 25 </x-primary-button> 26 </form></br> 27 @endforeach 28</x-app-layout>

試したこと

複数のidを収める場合のカラムのデータ型を調べています。
配列型を使うのは分かったのですが、初めて配列型を使うので、マイグレーションファイルでの記述の仕方がまだ分かっていません。

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

PHP8
Laravel10

コメントを投稿

0 コメント