2017-02-04 112 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 –