我在laravel有一個工作的crud代碼,但我的問題是驗證。這裏是我的代碼:Laravel 5更新驗證
public function update(Request $request)
{
$room_id = $this->route('route');
$validator = \Validator::make(\Request::all(), [
'roomNumber' => 'required|unique:rooms,roomNumber,',
'type' => 'required',
'price' => 'required',
]);
if(!$validator -> fails()){
$id = \Request::input('id');
$com = Room::find($id);
$room -> roomNumber = \Request::input('roomNumber', 'Test');
$room -> type = \Request::input('type', 'Test');
$room -> price = \Request::input('price', '0.00');
$room -> description = \Request::input('description', 'Test');
$com -> save();
return redirect('rooms') -> with('message', 'Room Updated!');
} else {
return redirect('rooms') -> withErrors($validator->errors());
}
}
正如你所看到的,roomNumber是必需的,應該是唯一的。我的問題是,這是更新代碼。如果我只想更新price
或type
等字段,該怎麼辦?每當我更新一個字段時,在我看來,我總是得到The room number has already been taken.
,因爲是的,roomNumber在我的驗證中應該是唯一的。
如何更新某一特定領域,將仍然檢查room number
是獨一無二的,但如果我更新的數據是在同一領域,它只會更新其他字段,如type
和price
?如果我的問題含糊不清,請糾正我。謝謝!
例子:
我在我的房間表
Data 1:
roomNumber: 214
type: Queen
price: 150.00
Data 2:
roomNumber: 619
type: Suite
price: 250.00
現在2分數據的,如果我從150.00
更新Data 1
場price
到160.00
,我會得到驗證錯誤The room number has already been taken.
,因爲它也將驗證我更新時的roomNumber
。如果我正在更新的數據是相同的,我如何在不驗證roomNumber
的情況下更新它?
抱歉,你可以澄清一點,當你說「..但如果我更新的數據是在同一個領域,它只會更新其他領域,如類型和價格」。你能給個例子嗎 ? – codegeek
@codegeek更新了我的文章 – FewFlyBy