I have validation rules for my model:
protected $fillable = array('username','firstname','lastname',"street","city","country","birthday","email");
public static $rules = array(
'username' => 'required|between:4,16|unique:users',
'email' => 'required|email|unique:users',
'password' => 'required|min:4',
'firstname' => 'required|alpha_num|between:2,16',
'lastname' => 'required|alpha_num|between:2,32',
);
and my update method:
public function update($id)
{
$user = User::find($id);
$data = Input::all();
if ( isset($data['firstname']) ) {
$user->firstname = $data['firstname'];
}
$success = $user->update();
if ( $success ) {
return Response::json(array('error' => false, 'user' => $user->toArray()), 200 );
} else {
return Response::json(array('error' => true, 'message' => $user->errors()->all()), 400 );
}
}
And now I'm getting an error:
{
"error": true,
"message": [
"The username has already been taken.",
"The email has already been taken."
]
}
So, the question is: How can I update only one field of the model?
UPDATE:
As I'm using Ardent (https://github.com/laravelbook/ardent) I could do:
$success = $user->updateUniques();
and everything works now.