2016-01-06 47 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;