1
使用Laravel 5.4,我的用戶有一個自動完成的幫助器來將值輸入到輸入中。我想驗證插入時每個值都存在於數據庫中。驗證每個逗號分隔值是否存在於數據庫中?
爲「單位」輸入值「12,13,14」
如何檢查,單位「12」和單位「13」和單位「14」存在於數據庫做插入前?
$units = array_filter(array_unique(explode(",", $request->unit)));
// input "12,13,14" becomes [12,13,14]
$this->validate($request,[
'unit' => 'required|exists:units.id,'.$units,
]);
我必須使用自定義的驗證規則,或確實laravel有一些方便的像「需要| existsAllValuesInThisArray」八九不離十的事情嗎?在有關它的文檔中沒有找到任何東西。
我也發現這個,但它是用於像多個選擇字段或複選框從它的外觀sorta事情。
$validator = Validator::make($request->all(), [
'person.*.email' => 'email|unique:users',
'person.*.first_name' => 'required_with:person.*.last_name',
]);
更新:我結束了使用javascript發送它關閉處理之前分割輸入到一個數組。所以我的輸入名稱變成了「單位[]」而不是「單位」
我認爲你有兩種可能的方法:在js中修改你的輸入併發送給服務器一個數組,使用你發佈的第二個片段驗證並使用自定義驗證規則 – gbalduzzi
嘗試'$ this-> validate($ request, [。單位。*'=>'必需存在:units.id,'。$ units, ]);'。由於'$ units'是一個數組,因此規則'unit。*'應該檢查數組中的每個元素。 –
@JoséA.Zapata,你的回答是正確的。你可以發佈嗎? – Darius