Mysql 用save()雄辩地更新数据库;

Mysql 用save()雄辩地更新数据库;,mysql,laravel,eloquent,Mysql,Laravel,Eloquent,我做错了什么 public static function updateuserdetails(){ $user_id_update_user_details = Input::get(); // find the user to update : $user = User::where( 'user_id' , '=', $user_id_update_user_details['user_id'] )->first() ; foreach ( $user

我做错了什么

public static function updateuserdetails(){

   $user_id_update_user_details = Input::get();
    // find the user to update : 
   $user = User::where( 'user_id' , '=', $user_id_update_user_details['user_id'] )->first() ;

   foreach ( $user_id_update_user_details as $key => $value) {        
       $user->$key = $value ;
   }

 $affected = $user->save();
 return $affected ;
} 

它不会将数据保存到数据库中。我必须使用“foreach”循环,因为我不知道需要从所有列中更新什么

在模型中设置可访问数组,并改用fill。也。。。你的身份证不是叫“身份证”吗?如果是这样,为user_id设置一个值可能会导致底层SQL失败

class User extends Eloquent {

    public static $accessible = array( 'id', 'name', 'email', ... );

}

Route::post( 'user/save', function ()
{
    $user = User::find( Input::get( 'id' ) );

    if ( empty( $user ) )
        return 'Could not find user';

    $user->fill( Input::get() );

    $user->save();
});

在查看并设置属性之前,是否确定在
$user
中有用户记录?另外,您可以使用
User::find($User\u id\u update\u User\u details['User\u id'))
,因为您只需要一条记录。老实说,我不会为每个人这样做,因为这有一些严重的安全问题。您应该在模型上定义可访问的属性,然后输入或手动拾取每个属性。另外,我假设您想查询
where('id')
find($id)
,而不是
where('user\u id')
,但我可能在这方面错了。