库存验证不能实现
需求:我要对当前的库存进行验证,如果库存小于订单,则不让这个订单提交。
验证字段实现的比较容易,比如IP 邮箱 电话,这些可能一行代码就能实现。但是对数字的大小验证呢?这个需求中,最小肯定是0,最大值是动态的。
我在文档中找到的是Great Than ,Less Than这些,还有digits_between,我实现不了
$validatedData = $request->validate(['total' => 'Less Than 100']);
提示方法不存在。
6 Comments
你这是写的什么鬼,是这么调用的:
其中 field 是另一个请求字段,而不是具体值,你这种情况下,如果仅仅是大于0校验,应该用 min 规则:
如果要根据数据库查询结果动态计算,还需要自定义验证规则来实现
谢谢
学院君,我少一个属性。自定义验证规则,我验证total属性是表单传递来的。那我验证库存需要库存id才能查找,如何拿到这个id呢
public function passes($attribute, $value)
Illuminate\Contracts\Validation\Rule;
这个类里面只有两个方法,就是教程里面说的方法。不能传递其他的参数进来,没办法查数据库里面的剩余量
$request->validate(['total' => ['required', new InventoryCheck]]);
或许我可以改写成这样
$request->validate(['total' => ['required', new InventoryCheck($request -> id)]]); 给我InventoryCheck增加一个id属性,之后在passes方法里面调用这个方法进行查找数据库验证。
我来试试
果然,我打印出来的。自定义验证逻辑算是弄明白了。
写过学院君