php - 请求类:规则取决于元素的数量
问题描述
我正在使用请求类来验证表单,但我遇到了问题。看看这段代码
public function rules()
{
return [
'title' => 'required|string|between:6,50',
'category_id' => 'required|integer|between:1,10'
];
}
它可以正常工作,但类别的数量会发生变化。如果我在控制器的方法中使用 validate 方法,我可以解决我的问题:
$count = Category::count();
$request->validate([
'title' => 'required|string|between:6,50',
'category_id' => 'required|integer|between:1,' . $count
]);
如何使用请求类解决我的问题?
解决方案
您的验证目前没有多大意义,您正在验证数据库中可能存在或不存在的任意数字。
我将假设您只想接受数据库中存在的类别 ID,因此我将使用以下exists
规则:
$request->validate([
'title' => 'required|string|between:6,50',
'category_id' => 'required|integer|exists:categories,id'
]);
从文档:
exists:table,column
验证中的字段必须存在于给定的数据库表中。
Exists 规则的基本用法
'state' => 'exists:states'
如果未指定列选项,则将使用字段名称。
指定自定义列名
'state' => 'exists:states,abbreviation'
推荐阅读
- django - 如何从外键字段中获取值?django
- gremlin - 如何在gremlin中使用coalesce和select?
- r - 有没有办法在 fviz_eig 图中添加一个 cum sum?
- javascript - Node js中的编码和解码
- javascript - mvc jquery上的“/”应用程序中的服务器错误
- python - pandas:如何通过在 DataFrame 中分组来获取行的总和?
- python - 在 discord.py 音乐机器人中添加搜索功能
- vba - 使用追加查询将未绑定的值保存在表单中
- metaprogramming - 元编程的实际使用
- c++ - 为什么这个模板类的复制构造函数没有被调用?