_nakachan
@_nakachan

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【Laravel】新規投稿ができない

Q&A

Closed

解決したいこと

  • 新規投稿できるようにしたい

発生している問題・エラー

  • 新規投稿ボタンを押すと下記エラーが表示されます!
SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value (Connection: mysql, SQL: insert into `notes` (`name`, `description`, `cord_txt`, `url_txt`, `public_status`, `updated_at`, `created_at`) values (たいとる, せつめいらん, こーど, https://www.s.com, 1, 2023-04-21 09:31:28, 2023-04-21 09:31:28))

image.png

Noteモデル

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class Note extends Model
{
    use HasFactory;
    public $fillable = [
        'name', 
        'description', 
        'cord_txt', 
        'url_txt', 
        'public_status'
    ]; 
    
    public function note_tags(): HasMany
    {
        return $this->hasMany(NoteTag::class);
    }
    public function user(): BelongsTo
    {
        return $this->belongsTo(User::class);
    }
}

Noteコントローラ

  public function store(Request $request)
  {
      $note = new Note;
      $note->name = $request->name;
      $note->description = $request->description;
      $note->cord_txt = $request->cord_txt;
      $note->url_txt = $request->url_txt;
      $note->public_status   = $request->public_status;
      $note->save();
      return redirect('notes/'.$id);
    }

どこに問題があるかわからずなにをしたらいいかわからない状態です...
どなたか解決策ご教示いただけますと幸いです!
よろしくお願いいたします。

0

1Answer

まず、エラーメッセージを読みましょう。ヒントはそこにあります。

mysql がエラー番号1364(#1364 - Field doesn't have a default value)を返しています。
検索すると幾つかページが見つかります(Qiitaにもあります)。
解りやすいかなと思ったものには、例えば次のようなページがあります。
https://pentan.info/sql/mysql/strict_mode.html

0Like

Comments

  1. @_nakachan

    Questioner

    コメント&参考ページありがとうございます!!
    AWSで実装を進めており、なにを修正していいのかわからない状態なのですが
    それぞれのマイグレーションファイルでリレーション結んでいるカラムに下記記述したらこのエラーは解消されたようでした!
    ->constrained();
    ご教示ありがとうございます!

Your answer might help someone💌