下面是数据库表的示例。
帖子表:
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',
]
使用上述验证规则,它将验证post_id
表的id
列中是否存在posts
。 comment_id
也是一样。
但是在我的情况下,如果您选择帖子ID = 1
,它应该验证comment_id
是1
还是2
,因为只有这两个注释属于帖子ID = 1
。
如果您选择帖子ID = 2
,同样如此,它应该验证所选的comment_id
是否属于帖子ID = 2
。
否则,即使comment_id
表的id
列中确实存在选定的comments
,验证也应该失败。
如何在Laravel 5或6中进行此类验证?
答案 0 :(得分:0)
您好,这是您可以执行的方法。我相信您正在使用Request类 此代码段可以在有或没有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);
}),
]
有关更多信息,请查看文档https://laravel.com/docs/5.7/validation
答案 1 :(得分:0)
'comment_id' => [
'required',
Rule::exists('comments')->where(function ($query) use($post_id) {
$query->where('post_id', $post_id);
}),
],