2016-04-30 100 views
1

我想在將值插入數據庫的同時獲取當前ID。我將使用它來保存自定義數據。我該怎麼做?Laravel - php如何在數據庫中插入值時獲取當前ID?

我已經寫了一個查詢了。

$currentId = Student::orderBy('id', 'desc')->get(['id']) + 1; 

但它顯示了以下錯誤:

類照亮\數據庫\雄辯\徵收對象無法 轉換成int

+1

'學生::排序依據(「身份證」,「遞減」) - >獲取([「身份證」])'將返回一個集合,而不是一個整數 –

回答

2
$currentId = Student::orderBy('id', 'desc')->first()->id + 1; 

但在重交通網站這可能會導致數據完整性的問題,所以我會用這種方法:

$student = new Student(); 
.... 
$student->save(); 
$currentId = $student->id; 
+0

先生,你可以幫我節省id作爲' 001,002或010'這樣的事情? 或任何想法。 – Hola

+0

可以在DB將它們保存爲1,2,10,並訪問https://laravel.com/docs/5.1/eloquent-mutators#accessors-and-mutators修改它們 - 或者你可以添加另一列,並添加這些ID那裏,如果你不希望依賴於主鍵 –

+0

雖然是空的數據庫中的第一個解決方案是行不通的,因爲它會顯示'試圖獲取不反對property' – Hola

0

你必須做這樣的事情: -

$insertData['name'] = 'your name'; 
$insertData['password'] = 'password'; 
.. 

等。

// $insertData this will be your array which you want to insert in your db. name and password used in insertData array will be same as your table column name.. 

$lastId = Student::insertGetId($insertData); 

它會給你最後插入laravel ID,它會幫助你。

0

試試這個 $數據=學生::排序依據( '身份證', '遞減') - >獲取([ '身份證']); $ data-> getId();

+0

'方法的getId不exist.' – Hola

相關問題