2017-02-28 34 views
0

在我的laravel項目中,我使用modelname :: insert方法插入多個記錄。現在我想要得到最後插入的id。我在用單個插入方法插入多個記錄並嘗試獲取last_record_id時會讀取某處,它會爲您提供最後插入的查詢串的第一個ID。但我的第一個問題是如何使用下面的代碼獲取最後一個記錄ID。如果我能夠獲得第一個id,我將使用增量變量爲其他記錄創建其他記錄。如何在laravel中使用插入方法獲取最後一個插入的ID

代碼中插入多個記錄

if(!empty($req->contract_name) && count($req->contract_name)>0) 
      { 

       for($i=0; $i<count($req->contract_name); $i++) 
       { 
        $contract_arr[$i]['client_id'] = $this->id; 
        $contract_arr[$i]['contract_name'] = $req->contract_name[$i]; 
        $contract_arr[$i]['contract_code'] = $req->contract_code[$i]; 
        $contract_arr[$i]['contract_type'] = $req->contract_type[$i]; 
        $contract_arr[$i]['contract_ext_period'] = $req->contract_ext_period[$i]; 
        $contract_arr[$i]['contract_email'] = $req->contract_email[$i]; 
        $contract_arr[$i]['created_at'] = \Carbon\Carbon::now(); 
        $contract_arr[$i]['updated_at'] = \Carbon\Carbon::now(); 
        $contract_arr[$i]['created_by'] = Auth::user()->id; 
        $contract_arr[$i]['updated_by'] = Auth::user()->id; 
        if($req->startdate[$i] != ''){ 
         $contract_arr[$i]['startdate'] = date('Y-m-d',strtotime($req->startdate[$i])); 
        } 
        if($req->enddate[$i] != ''){ 
         $contract_arr[$i]['enddate'] = date('Y-m-d',strtotime($req->enddate[$i])); 
        } 
       } 
       if(!empty($contract_arr)){ 

        Contract::insert($contract_arr); 

       } 
      } 
+0

【如何獲得laravel最後插入的IDS(的可能的複製http://stackoverflow.com/questions/35521277/how-to-get-last-inserted-ids-in- laravel) – WesselV

回答

0

你應該能夠這樣稱呼它

$lastId = Contract::insert($contract_arr)->lastInsertId(); 
+0

return an error =調用成員函數lastInsertId()on boolean –

0

如果我看到合適的,您使用的模型。直接插入僅顯示成功布爾值。試試這個:

Contract::create($contract_arr)->getKey()