Php Laravel验证规则仅适用于属于选定相关模型的ID

Php Laravel验证规则仅适用于属于选定相关模型的ID,php,laravel,validation,belongs-to,validationrules,Php,Laravel,Validation,Belongs To,Validationrules,下面是数据库表的示例 员额表: id name 1 A 2 B 意见表: id post_id text 1 1 aaaaaaa 2 1 AAAAAAAAAAA 3 2 bbbbbbbbb 4 2 BBBBBBBBBBBB 5 2

下面是数据库表的示例

员额表:

id       name
1        A
2        B
意见表:

id        post_id       text
1         1             aaaaaaa
2         1             AAAAAAAAAAA
3         2             bbbbbbbbb
4         2             BBBBBBBBBBBB
5         2             b5b5b5b5b
下面是我当前的验证规则

[
     'post_id' => 'required|exists:posts,id',
     'comment_id => 'required|exists:comments,id',
]
使用上述验证规则,它验证
posts
表的
id
列中是否存在
post\u id
。注释id与
相同

但在我的例子中,如果选择post id=
1
,它应该验证
comment\u id
1
还是
2
,因为只有这两条注释属于post id=
1

同样,如果选择post id=
2
,则应验证所选的
注释id
是否属于post id=
2

否则,即使所选的
comment\u id
确实存在于
comments
表的
id
列中,验证也会失败


如何在Laravel 5或6中进行此类验证

嗨,这是你可以做到的方法。我相信您正在使用Request类 此代码段可以与请求类一起使用,也可以不使用请求类

[
     'post_id' => 'required|exists:posts,id',
     'comment_id' => [
        'required',
         Rule::exists('comments')->where(function($query){
                    $query->where('post_id', request()->post_id)
                          ->where('id', request()->comment_id);
}),
]

有关更多信息,您可以查看文档

是否使用验证请求?
'comment_id' => [
        'required',
        Rule::exists('comments')->where(function ($query) use($post_id) {
            $query->where('post_id', $post_id);
        }),
    ],