Задать вопрос
@Ewig23

Как обойти ограничение максимального размера поля в 255 символов?

Всем привет.
Достался на поддержку самописный проект на Yii.

Возник вопрос по смену типа поля.
Есть поле с названием 'video_url'. По умолчанию оно имеет ограничение длины 255 символов.
Нам надо снять ограничение 255 символов, но сделать это не получается

Поле создано в файле с именем m******_******_create_additionals_product_tables.php

public function safeUp() {
        
        /*тут идет код другого поля*/
        
        $this->createTable('{{%product_video}}', [
            'id' => $this->primaryKey(),
            'product_id' => $this->integer()->notNull(),
            'video_url' => $this->string(),
            'sort_order' => $this->integer(),
        ]);
        
        $this->addForeignKey('fk_product_video_attachment', '{{%product_video}}', 'product_id', '{{%product}}', 'id', 'cascade', 'cascade');
        /*тут также идет код другого поля*/
    }


Попытки смены типа поля в строке 'video_url' => $this->string() на text и ли varchar, ни к чему не привели.

Валидация поля проходит через следующую функцию:

public function rules()
    {
        return [
            [['product_id'], 'required'],
            [['product_id', 'sort_order'], 'integer'],
            [['video_url'], 'string', 'max' => 255],
            [['product_id'], 'exist', 'skipOnError' => true, 'targetClass' => Product::className(), 'targetAttribute' => ['product_id' => 'id']],
        ];
    }


Внесение правок в эту функцию также ни к чему не приводит. Менял и тип поля, менял и убирал ограничение по размеру - не помогает.

В базе данных тип поля прописан таким образом:

CREATE TABLE `site_product_video` (
  `id` int(11) NOT NULL,
  `product_id` int(11) NOT NULL,
  `video_url` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `sort_order` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


Сайт расположен на хостинге. Подскажите, как все-таки поменять поле? Нужно ли произвести новую миграцию? Заранее спасибо за любую помощь.
  • Вопрос задан
  • 84 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@Nolan81
программист
Нужно писать новую миграцию, в которой через ALTER TABLE сменить определение поля. И запустить ее.
Ответ написан
Ваш ответ на вопрос

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

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