Laravelのバリデーションで、条件付けを行う方法が知りたいです。
例えば、postsとCommentsがhasMany、belongsToのリレーション関係にあるとします。
postsテーブルのtitleカラムがHelloかつリレーションしているcommentsを一つでも持っている場合にバリデーションを通したいです。
PHP
1$post_exists = Rule::exists('posts', 'id')->where(function ($query) { 2 $query->where('title', 'Hello'); 3 }); 4 5\Validator::make($request->all(), [ 6 'post' => ['required', $post_exists, 'exists:comments,post_id'], 7])->validate();
name='post'リクエストが100だったとすると、
-
postテーブルのid=100のtitleがHelloであること。
-
commentsのpost_idに100が存在すること。
という2つのバリデーションを設定するところまではできます。
ただ、このやり方だとどちらかの条件に一致した段階でバリデーションに引っかかってしまいます。
A or BではなくA and Bのように条件をつけるにはどうすれば良いでしょうか。
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。