2017-08-03 20 views
0

我的情況是,我沒有使用自動增量在我的模型 ID。檢索Laravel觸發生成的UID的保存方法

相反,我使用MySQL的觸發器自動enerated一個串UID,G

所以,當我創建一個模型,例如

$foo = new Foo(); 
$foo->bar = "bar"; 
$foo->save(); 
echo $foo->id; // null 

我的id爲null。發生這種情況是因爲我的public $incrementing必須設置爲false。

如何檢索此觸發器已保存值爲save()

+0

可以像['Model-> fresh()'](https://laravel.com/api/5.4/Illuminate/Database/Eloquent/Model.html#method_fresh)這樣做嗎? – Bytewave

+0

@Bytewave它返回'null',可能是因爲它沒有找到沒有ID的記錄。 – Luiz

+0

@Luiz,你試圖創建'()'方法,'富::創建([ '酒吧'=> '巴']);'? –

回答

0

我讀API of Laravel 5.4(假設你使用這個版本),而我發現:

array getDirty()方法:

$foo->save(); 
$newAttributes = $foo->getDirty(); 
dd($newAttributes); // dump an array. 

void refresh()方法:

$foo->save(); 
$foo->refresh(); 
dd($foo->id) 

最後解決方案,where()從QueryBuilder的找到您的實例:

$foo->save(); 
Foo::where('bar', $foo->bar) 
    ->where('toto', $foo->toto) 
    /* ... */ 
    ->get(); 
dd($foo->id);