

### 解決したいこと

ネットの記事を参考にしながらツイッターのような簡単な投稿サイトを作成しています。  
ログイン機能実装中で、ユーザーのダミーデータを作っています。  
一覧表示から投稿実装までのCRUDの流れを確認しながら進めて、ログイン機能を追加実装してます。

'user_id'カラムを追加しましたが、下記エラーが出ます。  
投稿用のダミーデータは、ログイン機能まで問題なかったです。

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

[code]

     Illuminate\Database\QueryException  : SQLSTATE[HY000]: General error: 1364 Field 
       Illuminate\Database\QueryException  : SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value (SQL: insert into `posts` (`created_at`, `updated_at`, `subject`, `message`, `name`) values (2013-02-13 02:11:00, 1972-03-04 01:34:26, つゆが太陽たいの活字かつかった。, ませんなは乗のらな草や、いっぱいしょう」ジョバンニは［＃小書き平仮名ん、ぼんやり白く見えましたちはかすか」ジョバンニは帽子ぼうしろの方を見ているのでした。その鶴つるしは、もうたびはしたような笛ふえを吹ふきなりませんでした。「君たちしっかささぎだねえ」「みんなにうな青じろいろの天上なんだ」カムパネルラにたずねましたりした。「いや森が、なんだねえ」ジョバンニが勢いきないで河かわらっと白服しろはジョバ。, 吉本 京助))
    
[/code]

### 該当するソースコード

[code]

    laravel-app/app/Post.php
    
    use Illuminate\Database\Eloquent\Model;
    
    class Post extends Model
    {
        /**
         * 投稿データを所有するユーザを取得
         */
        public function user()
        {
         return $this->belongsTo('App\User');
        }
        
         // 割り当て許可
         protected $fillable = [
            'name',
            'subject',
            'message', 
            'user_id',
            #'category_id'
        ];
    
    laravel-app/database/migrations/2021_03_10_101736_create_posts_table.php
    
    
    use Illuminate\Support\Facades\Schema;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Database\Migrations\Migration;
    
    class CreatePostsTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('posts', function (Blueprint $table) {
                $table->bigIncrements('id');
                $table->timestamps();
                $table->string('is_deleted', 4)->default('0');
                #$table->integer('category_id');
                $table->string('subject');
                $table->text('message');
                $table->string('name');
                $table->unsignedBigInteger('user_id'); #追加
                $table->foreign('user_id')->references('id')->on('users'); #追加
            });
        }
    
    laravel-app/database/seeds/PostsTableSeeder.php
    
    use Illuminate\Database\Seeder;
    
    class PostsTableSeeder extends Seeder
    {
        /**
         * Run the database seeds.
         *
         * @return void
         */
        public function run()
        {
            factory(App\Post::class, 50)
                ->create()
                ->each(function ($post) {
                    $comments = factory(App\Comment::class, 2)->make();
                    $post->comments()->saveMany($comments);
                }
            );
        }
    }
    
    
    
[/code]

### 自分で試したこと

テーブルを書き直したので、migrate:refreshをしました。  
つぎにダミーデータを作成したかったので、（PostsTableSeeder,UsersTableSeeder)  
PostsTableSeederでエラーになってしまいました。  
user.idを追加したので、以前に作った投稿のダミーデータに問題が起きてしまいました。

[code]

    $ php artisan migrate:refresh
    Dropped all tables successfully.
    Migration table created successfully.
    $  php artisan db:seed
    
    Exception trace:
    
      1   PDOException::("SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value")
          /var/www/html/laravel-app/vendor/laravel/framework/src/Illuminate/Database/Connection.php:458
    
      2   PDOStatement::execute()
          /var/www/html/laravel-app/vendor/laravel/framework/src/Illuminate/Database/Connection.php:458
    end
    
[/code]

### 参考記事

ログイン機能  
<https://note.com/yuki_biwako/n/n696cb97b64b7>  
投稿関係  
<https://nodoame.net/archives/11628#vol9>


CC BY-SA 4.0
2021-03-14T03:49:50.923
74664
2023-02-13T16:01:25.177
2021-03-14T07:19:17.200
3060
44328
question
php laravel
Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1364 Field


database/factories/PostFactory.phpを修正して、user_idカラムにも値が入るようにしましょう。

参考: [Laravel 7.x データベースのテスト
リレーション](https://readouble.com/laravel/7.x/ja/database-
testing.html#relationships)


CC BY-SA 4.0
2021-03-14T06:10:31.037
74666
2021-03-16T02:02:28.393
2021-03-16T02:02:28.393
44069
44069
74664
answer