デフォルトのルールが機能しないunique
とアプローチルールは、列の値が第3のパラメータとして渡されることを期待し、そうtitle
列がものではありませんAuth::user()->id
値に等しい場合は、あなたのケースでは、チェックしますので、あなたは欲しい。
今
Validator::extend('unique_custom', function ($attribute, $value, $parameters)
{
// Get the parameters passed to the rule
list($table, $field, $field2, $field2Value) = $parameters;
// Check the table and return true only if there are no entries matching
// both the first field name and the user input value as well as
// the second field name and the second field value
return DB::table($table)->where($field, $value)->where($field2, $field2Value)->count() == 0;
});
あなたがunique_custom
(またはあなたが好きそれに名前を付けることができます)ルールを使用することができます。
あなたはApp\Providers\AppServiceProvider
クラスのboot
メソッドに次のコードを追加することによって、あなたはカスタム検証ルールを所有作成することができますそのよう:
$validator = Validator::make($input, [
'title' => 'required|min:1|max:255|unique_custom:galleries,title,user_id,' . Auth::id(),
'description' => 'min:1|max:255'
]);
ルールは以下のようにパラメータを期待します
第一パラメータは、この場合には一意で、そのため値がユーザ入力から来ることになっているフィールド名であることをgalleries
第二パラメータあるテーブル名、すべきこの場合title
3番目のパラメータは、フィールド名の値となるように、この場合にuser_id
4パラメーターされるクエリ条件に追加される第2のフィールド名となります合格第3のパラメータとして
Auth::id()
を使用することもできます。Auth::user()->id
という短い形式です。
Laravel Documentationでカスタム検証ルールについて詳しく読むことができます。
何Laravelのバージョンを使用しているカスタムルールを書くことができますか? –
私は現在5.2を使用しています – Kaizokupuffball