从Eloquent Model Event

时间:2016-01-06 17:33:09

标签: mysql laravel eloquent laravel-5.2

我有一个模型,其中包含我在模型中定义的非自动递增主键ID

protected $primaryKey = "ID";

在我的AppServiceProvider中,我有一些模型监听器。

Product::created(function ($product){
    dd($product);
});

所以如果我去插入一个新行:

$NewProduct = new Product;
$NewProduct->ID = 12345;
$NewProduct->Name = "Test";

事件被触发,因此dd在AppServiceProvider中运行。 ID按预期进入数据库,但我输出的$product数组显示ID为0.

为什么ID在12345进入数据库时​​显示为0?

2 个答案:

答案 0 :(得分:3)

您应该将auto increment属性显式设置为false以使其正常工作。在你的模型中:

protected $primaryKey = "ID";
public $incrementing = false;
  

主键

     

Eloquent还会假设每个表都有一个主键列   命名id。您可以定义$ primaryKey属性来覆盖它   约定。

     

此外,Eloquent假设主键是递增的   整数值。如果您希望使用非递增主键,则为   必须将模型上的$ incrementing属性设置为false。

答案 1 :(得分:2)

我不确定,但你在模特中设置增量为假吗?

public $incrementing = false;