質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

135閲覧

chat機能のメッセージを投稿後、投稿したメッセージが表示されません。

Java_student

総合スコア56

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2024/04/17 21:21

実現したいこと

chat機能で作成しているのですが、メッセージを投稿後のリダイレクト先が同じチャットページなのですが、メッセージ投稿後に登校したメッセージが表示されませんでした。

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

投稿後に投稿したメッセージが表示されません。

該当のソースコード

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 <p>会議コード:{{$room->room_code}}</p> 7 </x-slot> 8 @if($room->host_id==$user->id || isset($member)) 9 <div class="romm-chat"> 10 <div class="room-chat-message"> 11 @foreach($messages as $message) 12 <div class="member-message> 13 <div class="chat-message"> 14 {!! nl2br(e($message->content)) !!}</br> 15 </div> 16 <div class="message-sub"> 17 <div class="message-time"> 18 {{ $message->created_at->format("Y年m月d日 h:i")}} 19 </div> 20 <div class="message-user"> 21 {{ $message->user->name }} 22 </div> 23 </div> 24 </div> 25 @endforeach 26 </div> 27 <div class=="room-chat-form"> 28 <form method="POST" action="{{ route('message.store') }}"> 29 @csrf 30 31 <!-- Name --> 32 <div> 33 <x-text-input id="content" class="block mt-1 w-full" type="text" name="content" :value="old('content')" required autofocus autocomplete="content" /> 34 <x-input-error :messages="$errors->get('content')" class="mt-2" /> 35 </div></br> 36 <input type="hidden" id="user_id" name="user_id" value="{{$user->id}}"> 37 <input type="hidden" id="room_id" name="room_id" value="{{$room->id}}"> 38 39 <div class="flex items-center justify-end mt-4"> 40 <x-primary-button class="ms-4"> 41 提案 42 </x-primary-button> 43 </div> 44 45 </form> 46 </div> 47 </div> 48 @else 49 <h1>入室許可を得るために、入室パスワードを入力してください</h1> 50 <form method="POST" action="{{ route('member.store') }}"> 51 @csrf 52 <div> 53 <input type="hidden" id="member_id" name="member_id" value="{{$user->id}}"> 54 <input type="hidden" id="room_id" name="room_id" value="{{$room->id}}"> 55 <input type="text" id="room_password" name="room_password" > 56 <x-primary-button class="ms-4"> 57 入室 58 </x-primary-button> 59 </div> 60 </form> 61 @endif 62</x-app-layout>

MessageController

1public function store(Request $request) 2 { 3 $user = Auth::user(); 4 $room = Room::find($request->room_id); 5 $member = Member::where('room_id', '=', $room->id) 6 ->where('member_id', '=', $user->id) 7 ->first(); 8 $messages = Message::where('room_id',$room->id) 9 ->get(); 10 $message = new Message; 11 $message->user_id = $request->user_id; 12 $message->content = $request->content; 13 $message->room_id = $request->room_id; 14 $message->save(); 15 return view('rooms/show', ['user'=>$user, 'room'=>$room, 'member'=>$member, 'messages'=>$messages]); 16 }

web.php

1Route::get('room', [App\Http\Controllers\RoomController::class, 'index'])->name('room.index'); 2Route::get('room/create', [App\Http\Controllers\RoomController::class, 'create'])->name('room.create'); 3Route::post('room', [App\Http\Controllers\RoomController::class, 'store'])->name('room.store'); 4Route::get('/room/{id}', [App\Http\Controllers\RoomController::class, 'show'])->name('room.show'); 5Route::put('room/update/{id}', [App\Http\Controllers\RoomController::class, 'update'])->name('room.update'); 6Route::resource('member', App\Http\Controllers\MemberController::class); 7Route::resource('message', App\Http\Controllers\MessageController::class);

試したこと

chat機能に関して検索してみたのですが、Pusherを使ったリアルタイムのチャット機能もあったのですが、こちらは今回の質問に関係しますか?
それともPusherを使わずに、投稿後に投稿したメッセージを表示させることは可能でしょうか?

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

PHP8
Laravel10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

satokei

2024/04/18 02:42

メッセージの保存前に、メッセージを取得しているからでは?
guest

回答2

0

自己解決

ありがとうございます。
新規messageを保存する前に、表示する$messagesを取得していた事が原因でした。
ありがとうございます。

投稿2024/04/18 21:44

Java_student

総合スコア56

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

サーバー送信イベントとセッションハイジャックを利用してchat的なものは簡単につくれそうですけどね

投稿2024/04/18 03:32

yambejp

総合スコア114876

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問