2017-02-04 65 views
1

我工作的一個API,我有一個資源控制器,CRUD的司機,我更新functon我得到這個錯誤Laravel 5.3 Update方法不工作

QueryException in Connection.php line 770: 
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'registration_center' cannot be null (SQL: update `drivers` set `registration_center` = , `registration_date` = 04-02-2017, `sponsor_name` = , `event_name` = , `registration_id` = 040217001, `profile_photo` = , `first_name` = , `last_name` = ,`updated_at` = 2017-02-04 04:54:54 where `id` = 3) 

我在更新方法做dd($request);我把所有的JSON響應

Request {#40 
    #json: ParameterBag {#32 
    #parameters: array:1 [ 
     "data" => array:61 [ 
     "id" => 3 
     "agent_id" => "201705" 
     "registration_center" => "dfgsdfgdfgdsdfgdf" 
     "registration_date" => "03-02-2017" 
     "sponsor_name" => "Sponser Name" 
     "event_name" => "RC" 
     "registration_id" => "FRTGHY030217001" 
     "profile_photo" => """," 
     "first_name" => "Walter" 
     "last_name" => "White" 
     "created_at" => "2017-01-24 10:08:42" 
     "updated_at" => "2017-02-03 11:33:52" 
     "deleted_at" => null 
     ] 
    ] 
    } 

dd($request->registration_center);我越來越NULL

我的方法

public function update(Request $request, $id) 
{ 
    $update_driver = Driver::find($id); 

    $update_driver->registration_center = $request->registration_center; 
    $update_driver->registration_date = $request->registration_date; 
    $update_driver->sponsor_name = $request->sponsor_name; 
    $update_driver->event_name = $request->event_name; 
    $update_driver->registration_id = $request->registration_id; 
    $update_driver->profile_photo = $request->profile_photo; 
    $update_driver->first_name = $request->first_name; 
    $update_driver->last_name = $request->last_name;       
    $update_driver->save(); 

    return $this->respondUpdated('Driver updated successfully'); 
} 

我的路線是

Route::group(['prefix' => 'v1', 'middleware' => 'auth:api'], function() { 
    Route::get('user', '[email protected]'); 
    Route::resource('drivers', 'DriversController'); //drivers CRUD 
}); 

期待着急需幫助

謝謝

+0

解碼的JSON數據。 – aldrin27

+0

搜索的'json_decode' – aldrin27

+0

PHP函數你是如何調用'update'方法,也分享你的'json_decode得到($請求)'? – C2486

回答

2

的一般方法來訪問發佈從Laravel請求數據是使用input方法。

$field = $request->input('field'); 

看你的例子,它好像Request對象中有一個data字段,它是一個關聯陣列和registration_center是內部的。如果我知道了,那麼在你的情況下,你會使用:

$update_driver->registration_center = $request->input('data')['registration_center']; 

// or, using Laravel's "dot"-syntax 
$update_driver->registration_center = $request->input('data.registration_center'); 

訪問數據。對於您嘗試檢索的所有其他值也是如此。

+0

感謝您的時間,我沒有'DD($請求 - >輸入(「data.registration_center」));'在郵遞員我得到響應'NULL'但如果我這樣做'DD($請求 - >所有() );'我得到所有的值 –

+0

好吧,讓我們試着去調試這個。當你做'dd($ request-> input('data'));'? –

+0

非常感謝你的時間,真的很感激它,現在我不存儲關聯數組中的數據我只是發送一個JSON對象,事情工作正常,謝謝 –

1

因爲它是一個數組,你需要訪問它:

$request['data']['registration_center']; 
+0

謝謝,我如何大規模更新值,因爲我現在正在做的 –

+1

對於大規模的任務,你可能想採取看看這個答案:http://stackoverflow.com/a/35631336/2141058 –