Код: Выделить всё
CREATE TABLE brand (
"product_id" varchar NOT NULL,
"id" varchar,
"settings" jsonb NOT NULL DEFAULT $${}$$
);
ALTER TABLE brand ADD CONSTRAINT products_brands_pkey
PRIMARY KEY ("product_id");
ALTER TABLE brand ADD CONSTRAINT products_brands_product_id_fkey
FOREIGN KEY ("product_id") REFERENCES products ("id");
Код: Выделить всё
$${}$$
true
Код: Выделить всё
$this->addSql('CREATE TABLE brands (product_id VARCHAR(255) NOT NULL, id VARCHAR(255) DEFAULT NULL, settings JSONB DEFAULT \'$${}$$\' NOT NULL, PRIMARY KEY(product_id))');
$this->addSql('ALTER TABLE brands ADD CONSTRAINT FK_6B0C4BCD4584665A FOREIGN KEY (product_id) REFERENCES products (id)');
Код: Выделить всё
SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type json
LINE 1: ...VARCHAR(255) DEFAULT NULL, settings JSONB DEFAULT '$${}$$' N...
^
DETAIL: Token "$" is invalid.
CONTEXT: JSON data, line 1: $...
Но в этом случае, если я запущу доктрину:migrations:diff еще раз, она сгенерирует новую миграцию с кодом типа
Код: Выделить всё
$this->addSql('ALTER TABLE brands SET DEFAULT \'$${}$$\'');
Я также попробовал другой подход , изменив
Код: Выделить всё
$${}$$
true
Код: Выделить всё
Код: Выделить всё
$this->addSql('CREATE TABLE brands (product_id VARCHAR(255) NOT NULL, id VARCHAR(255) DEFAULT NULL, settings JSONB DEFAULT $${}$$ NOT NULL, PRIMARY KEY(product_id))');
$this->addSql('ALTER TABLE brands ADD CONSTRAINT FK_6B0C4BCD4584665A FOREIGN KEY (product_id) REFERENCES products (id)');
Код: Выделить всё
$this->addSql('ALTER TABLE brands ALTER settings DROP DEFAULT');
Подробнее здесь: https://stackoverflow.com/questions/790 ... t-value-as
Мобильная версия