laravel - 复杂更新验证的逻辑应该放在哪里?
问题描述
我正在与我的团队讨论并使用 Laravel 框架。
验证对作为关系的现有模型属性的更新需要一些数据库调用以确保它符合约束条件。
我的第一个想法是创建一个自定义验证器,但是,这需要在验证器中进行查询。一种是让模型被更新,一种是获得存在的关系,另一种是获得它也将被更新的关系。这个验证器也只会用于更新这个模型上的这个属性。
或者,这可以通过事件进行验证,但我不确定保留该验证逻辑的最佳位置。
任何建议将不胜感激。
解决方案
Laravel 的自定义验证规则几乎就是为此而制定的
use Illuminate\Validation\Rule;
Validator::make($data, [
'email' => [
'required',
Rule::exists('staff')->where(function ($query) {
$query->where('account_id', 1);
}),
],
]);
您可以将任何您想要的约束放在查询中,只要返回至少 1 条记录,它就会通过
推荐阅读
- python - vagrant/ansible: ImportError: No module named site
- javascript - 使用可变过滤器从 json 对象中删除项目
- regex - 如何过滤嵌套正则表达式的子集以匹配组
- c++ - 从 TVector2 类派生 Complex 类:“没有用于调用 Complex::Complex() 的匹配函数”
- ffmpeg - 使用“-t”的 FFMPEG 输出持续时间太长了 10 毫秒
- git - Bitbucket 管道仅构建以掌握
- python - Keras 模型未正确保存
- python - 根据一列将 pyspark.sql 数据帧拆分为多个表
- django - Django 模板复杂反向查询计数
- qt - 如何在 QML 中的文本框之间进行选项卡导航?