【发布时间】:2017-12-25 23:38:03
【问题描述】:
我有以下迁移:
Schema::create('ingredients', function (Blueprint $table) {
$table->increments('id');
$table->string('name',10)->unique()->nullable(false);
$table->timestamps();
});
如果你注意到我希望字符串不超过 10 个字符
在我的控制器中,我有:
$this->validate($request, [
'name' => 'bail|required|unique:ingredients|max:200',
]);
在控制器中我提到最大字符数为 200。
所以当我用超过 10 个字符和少于 200 个字符填写表格时,它会存储在数据库中。这怎么可能。
laravel 不会检查迁移文件架构规则和验证规则之间的完整性。
我还注意到的另一件事是:如果我从控制器中删除验证规则并提交表单,它仍然不会检查 w.r.t 10 的字符数。它会创建一个新的数据库记录。即使我不使用任何验证规则,它也会检查唯一记录。
无论验证规则中是否提及,都会检查为什么要检查唯一性。
迁移文件中字符的最大数量(10)也没有意义。因为无论有没有验证规则,我都可以输入超过 10 个字符的名称。
好像我的验证规则说 max:2 然后它在提交时显示表单错误。
因此,无论验证规则如何,哪些可以从迁移文件中工作,而哪些甚至在迁移表中提到也根本不起作用。
【问题讨论】:
标签: laravel laravel-5 laravel-5.4 laravel-validation laravel-migrations