Фабрика Laravel создает столбец PK с именем Id вместо заданного - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть следующая фабрика:

$factory->define(App\Product::class, function (Faker $faker) {
    return [
        'product_name' => $faker->sentence($nbWords = 4, $variableNbWords = true),
        'product_description' => $faker->paragraph($nbSentences = 6, $variableNbSentences = true),
        'product_price' => $faker->numberBetween($min=500, $max=2000),
    ];
});

и следующая миграция:

public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->increments('product_id');
            $table->string('product_name', 356)->nullable(false);
            $table->longText('product_description')->nullable();
            $table->integer('product_price')->nullable(false);
            $table->timestamps();
        });
    }

После запуска фабрики и распечатки вновь созданного продукта, он говорит, чтоPK это «id» вместо «product_id».При попытке получить доступ к $ product-> product_id возвращает ноль, потому что очевидно, что этого не существует в соответствии с фабрикой.

При проверке таблицы БД я могу подтвердить, что столбец называется product_id, а не 'id'.

Я уже запустил:

composer dump-autoload

, а затем снова запустил миграцию, но все равно получил неправильные данные.

Спасибо

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Согласно документации, вы должны переопределить значение по умолчанию, установив это в вашей модели.

protected $primaryKey = 'product_id';

Не забудьте внести необходимые изменения в ваши отношения с таблицами (hasManys, ownTos и т. Д ...)

0 голосов
/ 13 сентября 2018

Вы можете изменить на:

$table->integer('product_id')->primary();
...