dimanche 8 novembre 2020

Migration and seeders in Laravel

I'm trying to seed my database in laravel but i keep getting the following error when i run:

php artisan db:seed

Error:

 SQLSTATE[42S22]: Column not found: 1054 Unknown column 'post_id' in 'field list' (SQL: insert into `posts` (`title`, `name`, `body`, `post_id`, `updated_at`, `created_at`) values (Karlie Block, Angela Schimmel, body2, 1, 2020-11-08 21:29:42, 2020-11-08 21:29:42))

Here are my classes:

create_posts_table.php:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreatePostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) { 
            $table->bigIncrements('id');
            $table->string('title');
            $table->mediumText('body');
            $table->string('name');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
}

Here is my PostFactory.php class:

<?php

namespace Database\Factories;

use App\Models\Post;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

class PostFactory extends Factory {
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = Post::class;

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition() {
        return [
            'title'=> $this->faker->name,            
            'name'=> $this->faker->name,
            'body'=> $this->faker->randomElement(
                ['body1','body2','body3','body4']),
            'post_id'=>1,
        ];
    }
}

I'm not sure why this error appears because i have a column called post_id. Am i missing something?



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire