Laravel条件质量分配


Laravel Conditional Mass-Assignment

使用批量分配调用User->update($data)时,是否可以只设置传入的用户密码?

视图:

<form>
    <input type="text" name="name">
    <input type="text" name="email">
    <input type="password" name="password">
    <input type="submit">
</form>

型号:

<?php
class User extends Eloquent {            
    public static $rules = [
        'name' => 'required:max:32',
        'email' => 'required|max:128'
        'password' => 'min:8|max:128'
    ];
    // Allow mass-assignment for:
    protected $fillable = ['name', 'email', 'password'];
    // The attributes excluded from the model's JSON form.         
    protected $hidden = ['password', 'remember_token'];
}

控制器:

class UsersController extends BaseController {
    public function update($id)
    {
        $user = User::findOrFail($id);    
        $validator = Validator::make($data = Input::all(), User::$rules);
        if ($validator->fails())
            return Redirect::back()->withErrors($validator)->withInput();
        $user->update($data); // How do I only update password if password was passed in?
    }
}

您应该使用:

$user->password = Hash::make(Input::get('password')); 
$user->save();

而不是:

$user->update($data);

只更新用户密码。