2015-10-10 46 views
2

考慮代碼Laravel雄辯 - 更新()函數總是返回true

return User::find($user_id)->update($data_array)?true:false; 

如果$data_array有一些列不存在於用戶相關的表格。 然後也在上面的語句return true

e.g:$data_array=['not_in_the_table'=>'value'];

return User::find($user_id)->update($data_array)?true:false; 

返回true。更新返回0時的條件是什麼,即false

回答

0

因爲驗證了Laravel使用庫,所以不能將錯誤變成錯誤。

對於Laravel 4.2

public function update($user_id) { 
    $data_array = Input::all(); 
    $validator = Validator::make(
    $data_array, 
    array('name' => 'required|min:5') 
); 

    if ($validator->passes()) { 
    // success as true 
    User::find($user_id)->update($data_array) 
    } else { 
    //failed as false 
    } 
} 

更多有關validator 我希望這可以幫助您

0

如果你使用where('id','=',$user_id)像下面而不是find($id),你會得到錯誤,如Column not found對於那些列不存在於用戶相關表中。因此,它是做到這一點的最佳方式:

User::where('id','=',$user_id)->update(['column_name'=>'value']); 

相反的:

User::find($user_id)->update($data_array)?true:false; 

更新方法總是返回int類型。欲瞭解更多信息Check Here

或者如果你想使用Object Relation Mapping方式來更新記錄,那麼你可以這樣做:

$user = User::find($user_id) ; 
$user->column_name = 'value'; 
if($user->save()){ 
     //do something when user is update 
}else{ 
     // do something wehn user is not update 
}