@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 не получается
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
@andreysuha Автор вопроса
Что то знаю
Судя по этому вопросу в mysql не будет работать уникальность по двум столбцам если один из них null. Я дальше в эту сторону не копал и сделал так. Уникально только поле slug и хранится в виде parent_parent_..._parent_slug/.../parent_slug/slug. Да когда нужно обновить slug нужно доставать всех потомков и обновлять у них тоже это поле, но когда нужно прочитать запись что бы узнать полный slug не нужно доставать все предков
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы