我有我的模型驗證規則:Laravel模式:只更新一個字段
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."
]
}
所以,問題是:我如何只更新模型的一個領域?
UPDATE:
由於我使用的是阿特(https://github.com/laravelbook/ardent)我可以這樣做:
$success = $user->updateUniques();
和現在的一切工作。
我該如何附加當前更新的id實例? – Hese
一個可能的實現:http://stackoverflow.com/a/22406486/1165509 – marcanuy