Задать вопрос
  • Как правильно создать sequence?

    slo_nik
    @slo_nik Автор вопроса
    tukreb, не знаю, пока не буду усложнять)
    Написано
  • Как правильно создать sequence?

    slo_nik
    @slo_nik Автор вопроса
    tukreb, думаю, что это будет пустая трата времени.
    Я пытался сделать это и на чистом symfony и в legacy проекте и везде одинаковый вариант.

    Пробовал так же вариант с получением следующего значения из sequence.

    #[ORM\Column(type: 'integer')]
    private int $internalId;


    В миграции создавалось поле и sequence

    $this->addSql('CREATE SEQUENCE sequence_amqp_auth_user_internal_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
    $this->addSql('ALTER TABLE amqp_auth_user ADD internal_id INT NULL');


    В репозитории сущности добавил метод для получения следующего значения.

    public function nextVal(): int
        {
            return (int)$this->connection->executeQuery('SELECT nextval(\'sequence_amqp_auth_user_internal_id_seq\')')->fetchOne();
        }


    И при создании новой записи использовать этот метод.

    $user = User::create(
       ********,
       internalId = $this->repo->nextVal()
    );


    И опять же всё работает.
    Но, как только я создаю следующую миграцию, то первой строкой требование удалить sequence)))

    Избежать можно это через schema_filter: в самой doctrine. Буду использовать такой вариант.
    Написано
  • Как правильно создать sequence?

    slo_nik
    @slo_nik Автор вопроса
    Добрый день.
    Этот вариант я попробовал ещё вчера, как только Вы посоветовали его использовать.
    Но это опять же не решает проблему.
    Валидация схемы не проходит.

    Какой вариант я не пробовал - результат один и тот же.

    Ваш вариант не даст решить проблему, валидация не пойдёт и потребует сменить тип столбца на 'serial' и 'drop default'.

    В любом случае благодарю Вас за помощь в попытке решить проблему.
    Написано
  • Как правильно создать sequence?

    slo_nik
    @slo_nik Автор вопроса
    tukreb, насчёт columnDefinitio в доке есть предупреждение...

    Попробую через создание собственного типа.

    Благодарю за подсказки.
    Написано
  • Как правильно создать sequence?

    slo_nik
    @slo_nik Автор вопроса
    tukreb, при чём тут вклад к моему вопросу?)))
    Меня интересует, почему не проходит валидация схемы, почему требует сделать "DROP DEFAULT"?

    Если вернуться к простому варианту.

    #[ORM\Column(insertable: false, updatable: false, columnDefinition: 'serial')]
    private int $internalId;


    Генерирует миграцию

    $this->addSql('ALTER TABLE amqp_auth_user ADD internal_id serial');


    И этот вариант работает.
    При наличии uuid как pk, создаётся поле internak_id, которое заполняется так, как мне надо. Записываются последовательные значения.
    Сделал 11-ть записей, получил internal_id от 1 до 11.
    Удалил записи, сделал новые, получил internal_id oт 12 до 22.
    Uuid живёт своей жизнью.
    Но почему не проходит валидация схемы? Почему следующая миграция требует выполнить запрос?

    ALTER TABLE amqp_auth_user ALTER internal_id DROP DEFAULT;
    Написано
  • Как правильно создать sequence?

    slo_nik
    @slo_nik Автор вопроса
    tukreb, нужен именно uuid как pk.
    internal_id нужно для визуального контроля, простое число. Не знаю, как ещё можно объяснить.
    Написано
  • Как правильно создать sequence?

    slo_nik
    @slo_nik Автор вопроса
    tukreb, Ваш вариант решения мне известен (я про ссылку). Но нужно именно для не id столбца.
    И да, это работает, генерируется нужная последовательность. Но не проходит валидация схемы. Вот этот момент и надо решить.
    Написано
  • Как правильно создать sequence?

    slo_nik
    @slo_nik Автор вопроса
    tukreb, id есть, uuid.
    Этот столбец нужен для визуального контроля, так как uuid читать сложно)
    Может и не совсем верно выразился.
    Нужно последовательное значение, без повторов.
    Написано
  • Куда пропала yii валидация на клиенте?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый день.
    Возможно Вам надо подключать скрипты в модальном окне.
    Написано
  • Как правильно сделать выборку из нескольких таблиц?

    slo_nik
    @slo_nik Автор вопроса
    Akina, а мы можем как-то созвониться и пообщаться голосом?
    Написано
  • Как правильно сделать выборку из нескольких таблиц?

    slo_nik
    @slo_nik Автор вопроса
    по набору полей (table2,name, table4.value)

    Akina, не совсем понял. В таблице 2 хранятся параметры, а в 4-й значения параметра, с привязкой к товару. Так?
    Если да, то как тогда делать фильтрацию?

    А, позвольте спросить, зачем?

    Это я понял, накосячил.
    Но в 4-й таблице связь через id идёт. Если удалить значение с этим id, то будет ошибка.
    Написано
  • Как правильно сделать выборку из нескольких таблиц?

    slo_nik
    @slo_nik Автор вопроса
    Akina, да, думаю, что Вы правы. Надо удалить связь между 3-й и 4-й таблицами, чтобы не удалялись записи из 4-й таблицы.

    Но при помощи 4-й таблицы предполагается вывод товаров при фильтрации. Если писать в эту таблицу значения, а не id, то толку будет мало. Например и "ширины" и "длины" могут совпадать значения и тогда будет непонятно, какой именно товар выводить.

    И опять же, если удалить какое-то значение для параметра, то что тогда изменять в 4-й таблице?
    Написано
  • Как правильно сделать выборку из нескольких таблиц?

    slo_nik
    @slo_nik Автор вопроса
    Akina, я это понимаю, поэтому связь есть, которая будет очищать записи в 4-й таблице.
    Понимаю, что это не совсем верно.
    Как правильно сделать в данном случае?
    Написано
  • Как правильно сделать выборку из нескольких таблиц?

    slo_nik
    @slo_nik Автор вопроса
    Akina, список значений может дополняться и очищаться от ненужных значений.
    Написано
  • Как правильно сделать выборку из нескольких таблиц?

    slo_nik
    @slo_nik Автор вопроса
    Akina, третья таблица хранит значения параметра. Параметр один, например "ширина", а значений несколько для этого параметра, например "10", "20", "30" и так далее.
    При создании товара в форме выводятся все значения параметра "ширина" в select.
    В четвёртую таблицу записывается id выбранного параметра и выбранного значения, так же записывается id товара.
    При просмотре товара, на основе четвёртой таблицы выводятся выбранные параметры и их значения.
    Написано
  • Как правильно сделать выборку из нескольких таблиц?

    slo_nik
    @slo_nik Автор вопроса
    tukreb, возможно, поэтому и задал здесь вопрос, как правильно сделать.
    Как реализовать это при помощи dbal я не представляю.
    Если можете - подскажите.
    Написано
  • Как правильно сделать выборку из нескольких таблиц?

    slo_nik
    @slo_nik Автор вопроса
    shushara4241, да, именно так. На основе id, которые хранятся в сводной таблице мне надо получить данные из других таблиц.
    Написано
  • Как правильно сделать выборку из нескольких таблиц?

    slo_nik
    @slo_nik Автор вопроса
    Akina, я дочитал его до конца.
    В четвёртой таблице хранятся параметры и их значения привязанные к какому-то товару.
    А в третьей таблице хранятся все значения параметра из которых надо сделать выбор при создании товара.
    Написано
  • Как правильно сделать выборку из нескольких таблиц?

    slo_nik
    @slo_nik Автор вопроса
    Akina, если выбросить таблицу 3, то где тогда хранить значения параметра?
    Написано
  • Как правильно сделать выборку из нескольких таблиц?

    slo_nik
    @slo_nik Автор вопроса
    Akina, в группе "Габариты", например, есть параметры "Длина", "Ширина", "Высота". У каждого параметра несколько значений, например "10", "20", "30" и так далее.
    Какую структуру Вы предлагаете в этом случае использовать?
    Написано