【发布时间】:2020-04-01 10:27:53
【问题描述】:
这是我的迁移:
Schema::create('coupons', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name')->unique();
});
这是我的自定义请求:
use Illuminate\Validation\Rule;
public function rules()
{
return [
'name' => [
'required', 'string',
Rule::unique('coupons')
->where(function ($q) {
$q->where('name', 'OFFER-2020');
})
]
}
我正在尝试阻止优惠券name 字段已存在于数据库表中的请求。由于OFFER-2020 行已经存在于coupons 表中,它应该阻止请求而不是通过验证。
更新
我的输入是OFFER 2020。而OFFER-2020 是转换后的值。我认为 laravel 正在检查 OFFER-2020 的唯一性。相反,它通过and 查询同时检查OFFER 2020 和OFFER-2020。这就是为什么我的独特功能不起作用的原因。
【问题讨论】:
-
您能描述一下您实际尝试实现的验证吗?
-
我正在尝试阻止数据库表中已存在优惠券“名称”字段的请求
-
请定义什么不起作用?您如何使用表单请求或内联验证的规则也应包含在问题中。
-
名字的输入是OFFER-2020?老实说,您的查询将其静态化是没有意义的
-
但它不应该工作吗?我在数据库表中有这个“名字”。为什么硬编码值不起作用?
标签: laravel laravel-6.2