Это моя миграция:
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
. Вместо этого он проверял как OFFER 2020
, так и OFFER-2020
по запросу and
. И именно поэтому мой уникальный не работал.