Laravel Eloquent - Update()函数始终返回true

时间:2015-10-10 11:05:43

标签: laravel sql-update eloquent

考虑代码

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

如果$data_array有一些用户相关表中不存在的列。 然后也在声明return true之上。

例如:$data_array=['not_in_the_table'=>'value'];

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

返回true。更新返回0false

时的条件是什么?

2 个答案:

答案 0 :(得分:1)

如果您使用下面的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;  

Update方法总是返回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
 }

答案 1 :(得分: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的更多信息 我希望这能帮到你