【发布时间】:2014-05-06 09:06:15
【问题描述】:
我的模型有验证规则:
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',
);
还有我的更新方法:
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 );
}
}
现在我得到一个错误:
{
"error": true,
"message": [
"The username has already been taken.",
"The email has already been taken."
]
}
那么,问题是:如何只更新模型的一个字段?
更新:
当我使用 Ardent (https://github.com/laravelbook/ardent) 时,我可以这样做:
$success = $user->updateUniques();
现在一切正常。
【问题讨论】: