我有一个模型,其中包含我在模型中定义的非自动递增主键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?
答案 0 :(得分:3)
您应该将auto increment属性显式设置为false以使其正常工作。在你的模型中:
protected $primaryKey = "ID";
public $incrementing = false;
主键
Eloquent还会假设每个表都有一个主键列 命名id。您可以定义$ primaryKey属性来覆盖它 约定。
此外,Eloquent假设主键是递增的 整数值。如果您希望使用非递增主键,则为 必须将模型上的$ incrementing属性设置为false。
答案 1 :(得分:2)
我不确定,但你在模特中设置增量为假吗?
public $incrementing = false;