Laravel工厂正在使用名称Id而不是给定的名称创建PK列

时间:2018-09-13 03:26:48

标签: php laravel laravel-5 factory

我有以下工厂:

$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时,返回null的原因是工厂显然不存在。

在检查数据库表时,我可以确认该列名为product_id而不是'id'。

我已经跑过了:

composer dump-autoload

,然后再次运行迁移,但仍返回错误的数据。

谢谢

2 个答案:

答案 0 :(得分:1)

根据文档,您应该通过在模型中进行设置来覆盖默认值。

inputPhrase

别忘了在表关系中进行必要的更改(hasManys,belongTos等...)

答案 1 :(得分:0)

您可以更改为:

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