前提・実現したいこと
初心者です。PHPのフレームワークLaravelを使って旅行投稿サイトを製作中です。
コンテンツのサンプルデーターを作りたくシードでサンプルデータを作ろうとしています。
しかし、artisanコマンド作成しようとしてもエラーが表示されてしまいます。
user_idのnullは強要しません。
ご教示いただけますと幸いです。
発生している問題・エラーメッセージ
SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value (SQL: insert into `contents` (`title`, `content`, `continent`, `country`, `span`, `costs`, `picture`) values (初めての海外旅行, 本当に楽しかった。, アジア, 中国・ 韓国・台湾, 15, 200000, 写真がいっぱい1))
該当のソースコード
マイグレーションファイル
public function up() { Schema::create('contents', function (Blueprint $table) { $table->bigIncrements('id'); $table->unsignedBigInteger('user_id'); $table->string('title' , 50); $table->string('continent'); $table->string('country'); $table->string('picture'); $table->string('content' , 500); $table->integer('costs'); $table->integer('span'); $table->timestamps(); //外部キー制約 $table->foreign('user_id')->references('id')->on('users'); }); }
Content モデル
class Content extends Model { protected $fillable = ['content' , 'title' , 'picture' , 'span' , 'costs' , 'continent' , 'country']; public function user() { return $this->belongsTo(User::class); } }
ContentsTableSeeder
public function run() { for($i=1 ; $i<=5 ; $i++) { DB::table('contents')->insert([ 'title'=>'初めての海外旅行', 'content'=>'本当に楽しかった。', 'continent'=>'アジア', 'country'=>'中国・韓国・台湾', 'span'=>'15', 'costs'=>'200000', 'picture'=>'写真がいっぱい'.$i ]); } }
試したこと
・ALTER TABLE テーブル名 ALTER フィールド名 SET DEFAULT デフォルト値;でデフォルト値を設定してもうまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
Laravel Framework 6.18.22
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。