2016-01-06 69 views
3

我有一个模型,其中包含一个非自动递增主键ID,这是我在模型中定义的。从Eloquent模型事件中获取新创建的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.

为什么当它作为12345进入数据库时​​,ID显示为0?

回答

2

您应该明确地将自动增量属性设置为false以使其工作。在你的模型:

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

主键

口才也假定每个表都有一个主键列 名为id。您可以定义一个$ primaryKey属性来覆盖这个约定。

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

+1

完美!谢谢 –

2

我不确定,但是你在模型中设置了false?

public $incrementing = false;