mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-10-24 06:03:32 +00:00
The `custom field long choice` aim to provide a way to deal with choices
with a big possibilities.
The `custom field long choice` allow :
- to persist different options in the database ;
- each option has a key, a text (translatable string), and eventually a
parent, and an internal_key
- every key can be activate or not. If the parent is inactivated, all
childs are inactivated
- the internal key have two purposes :
- link to an external csv file, with their own key ;
- add a special class to results, to allow custom layout.
Currently, the field exists, but some elements are missing :
- a script for CSV import
- possibility to select multiple items
- edition of options
- handle of option without parents
- tests are missing
48 lines
1.9 KiB
PHP
48 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace Application\Migrations;
|
|
|
|
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
use Doctrine\DBAL\Schema\Schema;
|
|
|
|
/**
|
|
* Auto-generated Migration: Please modify to your needs!
|
|
*/
|
|
class Version20151210205610 extends AbstractMigration
|
|
{
|
|
/**
|
|
* @param Schema $schema
|
|
*/
|
|
public function up(Schema $schema)
|
|
{
|
|
$this->abortIf($this->connection->getDatabasePlatform()->getName() != 'postgresql', 'Migration can only be executed safely on \'postgresql\'.');
|
|
|
|
$this->addSql('CREATE SEQUENCE custom_field_long_choice_options_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
$this->addSql('CREATE TABLE custom_field_long_choice_options (id INT NOT NULL, '
|
|
. 'parent_id INT DEFAULT NULL, '
|
|
. 'key VARCHAR(15) NOT NULL, '
|
|
. 'text jsonb NOT NULL, '
|
|
. 'active boolean NOT NULL,'
|
|
. 'internal_key VARCHAR(50) NOT NULL DEFAULT \'\', '
|
|
. 'PRIMARY KEY(id))');
|
|
$this->addSql('CREATE INDEX IDX_14BBB8E0727ACA70 ON custom_field_long_choice_options (parent_id)');
|
|
$this->addSql('ALTER TABLE custom_field_long_choice_options ADD CONSTRAINT cf_long_choice_self_referencing '
|
|
. 'FOREIGN KEY (parent_id) REFERENCES custom_field_long_choice_options (id) '
|
|
. 'NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
|
|
}
|
|
|
|
/**
|
|
* @param Schema $schema
|
|
*/
|
|
public function down(Schema $schema)
|
|
{
|
|
// this down() migration is auto-generated, please modify it to your needs
|
|
$this->abortIf($this->connection->getDatabasePlatform()->getName() != 'postgresql', 'Migration can only be executed safely on \'postgresql\'.');
|
|
|
|
$this->addSql('ALTER TABLE custom_field_long_choice_options DROP CONSTRAINT cf_long_choice_self_referencing');
|
|
$this->addSql('DROP SEQUENCE custom_field_long_choice_options_id_seq CASCADE');
|
|
$this->addSql('DROP TABLE custom_field_long_choice_options');
|
|
}
|
|
}
|