編輯我在找強制執行Laravel形式請求是唯一的領域,除了編輯時的最佳方式時。最明顯的例子是隻允許一次使用電子郵件地址,即系統中的每個用戶都需要一個唯一的電子郵件地址。獨特的領域在Laravel 5
這是直接的通過使該領域唯一實現使用表單請求,:
public function rules()
{
return [
'email' => ['required', 'email', 'unique:users,email'],
];
}
這使得所需的領域,作爲驗證電子郵件,使得它在用戶的表是唯一的。適合創建新用戶。但是編輯呢?用戶想要編輯他們的個人資料並再次保存相同的電子郵件地址(這是完全有效的)是完全合理的。但是,當然,unique
規則將觸發,因爲電子郵件已被「使用」(儘管用戶試圖編輯自己)。
Laravel提供瞭解決的辦法,通過在user
表的ID傳遞給忽略:
'email' => ['required', 'email', 'unique:users,email,'.$userId]
可是如何才能讓用戶ID?也許這是一個不好的例子,因爲獲取登錄的用戶ID很簡單,但其他對象沒有存儲在會話中呢?
如果一個人使用REST,那麼對象的ID將使用路由的URL和可用:
$userId = $this->route('order');
但這似乎很髒。那麼你還沒有使用REST修改對象的其他實例呢?如何在Laravel 5中編輯對象時強制表單請求中的唯一性?