@andreysuha
Что то знаю

Как провалидировать на уникальность 2х столбцов?

Есть такой код в миграции

$table->unique([ "parent_id", "slug" ], "unique_slug");


и такой в валидаторе

"slug" => "required|unique:categories,slug,NULL,id,parent_id,$parentId"


Проблема в том что parent_id nullable и ни laravel ни MySQL не могут провалидировать ситуацию когда он null.
Т.е. я не могу создать два раза запись
[
    "slug" => "my_slug",
    "parent_id" => 1
]


но могу сколько угодно

[
    "slug" => "my_slug",
    "parent_id" => null
]


P.s. parent_id тянется из пакета и установить ему дефолтное значение в 0 не получается
  • Вопрос задан
  • 274 просмотра
Решения вопроса 1
@andreysuha Автор вопроса
Что то знаю
Судя по этому вопросу в mysql не будет работать уникальность по двум столбцам если один из них null. Я дальше в эту сторону не копал и сделал так. Уникально только поле slug и хранится в виде parent_parent_..._parent_slug/.../parent_slug/slug. Да когда нужно обновить slug нужно доставать всех потомков и обновлять у них тоже это поле, но когда нужно прочитать запись что бы узнать полный slug не нужно доставать все предков
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dlnsk
@dlnsk
ПК Партнер 01.01 -> ПК Поиск -> IBM PC
MySQL считает все значения null разными. Из этого и исходи.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы