PHP Laravel
roomテーブルとmessageテーブルがあり、room hasMany messageの関係です。
以下のフォームでメッセージを送信すると下記のエラーが出てしまします。
●フォーム
<input type="hidden" name="send_by" value="company"> <input type="hidden" name="room_id" value="{{$room->id}}"> <input type="text" name="text"> <input type="submit" value="送信">
●エラー分
SQLSTATE[HY000]: General error: 1364 Field 'room_id' doesn't have a default value (SQL: insert into messages
(text
, updated_at
, created_at
) values (テスト, 2021-12-14 07:41:31, 2021-12-14 07:41:31))
誤字や、変数の設定などはミスがないと思いますが、どこが原因なのか教えていただけますでしょうか? value="{{$room->id}}"をvalue="1"のように置き換えても同じエラーが出ました。
以下メッセージテーブルの内容になります。
public function up() { Schema::create('messages', function (Blueprint $table) { $table->id(); $table->integer('room_id'); $table->string('send_by'); $table->string('text'); $table->timestamps(); }); }
Messageテーブルの構造になります。
Messageコントローラー
class MessageController extends Controller { public function CompanyMessageStore(Request $request) { $user = Auth::user(); $message = new Message(); $message->text = $request->text(); $message->save(); return back(); } }
Messageモデル <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Message extends Model { use HasFactory; public function room() { return $this->belongsTo('App\Models\Room'); } }
Roomモデル
public function messages() { return $this->hasMany('App\Models\Message'); }
回答3件
あなたの回答
tips
プレビュー