Как я могу добавить столбец перед другим столбцом в dbforge?

Я хочу добавить столбец с именем 'accept_loc', введите 'VARCHAR' в 3 таблицы базы данных (используйте библиотеку dbforge из codeigniter). Предположим, они названы t1,t2,t3.

структура t1:

  • Я бы
  • bla_bla
  • pick_up_loc
  • ....

структура t2:

  • Я бы
  • pick_up_loc
  • ....

структура t3:

  • Я бы
  • bla_bla
  • pick_up_loc
  • ....

если бы я использовал этот код ниже в моей функции перехода вверх:

$fields = array(
        'accept_lat' => array(
            'accept_loc' => 'VARCHAR',
            'constraint' => '50',
            'after' => 'id',
        ),
    );
$this->dbforge->add_column('t1',$fields);
$this->dbforge->add_column('t2',$fields);
$this->dbforge->add_column('t3',$fields);

результат:

структура t1:

  • Я бы
  • accept_loc
  • bla_bla
  • pick_up_loc
  • ....

структура t2:

  • Я бы
  • accept_loc
  • pick_up_loc
  • ....

структура t3:

  • Я бы
  • accept_loc
  • bla_bla
  • pick_up_loc
  • ....

это не очень хорошая структура. Как я могу добавить столбец перед 'pick_up_loc' для всех из них (n таблиц базы данных).

4 ответа

Пожалуйста, попробуйте поставить после в верхнем регистре, то есть "ПОСЛЕ", в этом была ошибка after Ключ и упомянутое исправлено здесь.

    $fields = array(
        'accept_lat' => array(
            'accept_loc' => 'VARCHAR',
            'constraint' => '50',
            'AFTER' => 'id'
        )
    );

Третий аргумент в add_column() - это $after_field. Таким образом, вы не можете добавить столбец перед другим столбцом, но вы можете сделать это:

$this->dbforge->add_column('t1', $fields, 'bla_bla');
$this->dbforge->add_column('t2', $fields, 'id');
$this->dbforge->add_column('t3', $fields, 'bla_bla');

Кроме того, вы, кажется, называете поле accept_lat и затем используете accept_loc вместо элемента type, который запутывает вещи.

Поздно к вечеринке, но для пояснения ваш код, например, на t1 должен выглядеть так:

 $fields = array(
            'accept_lat' => array('type' => 'TEXT')
);
    $this->dbforge->add_column('t1', $fields, 'id');

Таким образом, accept_lat будет добавлен после столбца id в таблице t1.

Судя по нашей оценке, проблема не связана с функциональностью нашего продукта.

Пожалуйста, обратитесь к документации по адресу https://codeigniter.com/userguide3/database/forge.html .

Обратите внимание на следующий пример, приведенный в документации – он должен помочь вам решить проблему.

$this->dbforge->add_field(""""label varchar(100) NOT NULL DEFAULT 'метка по умолчанию'"""");

Если проблема не устранена и связана с нашим программным обеспечением, заполните форму ниже. Предоставьте нам подробное описание проблемы и предпринятых вами действий. Кроме того, прикрепите соответствующие снимки экрана, чтобы помочь нам лучше понять проблему.

Обратите внимание, что вам необходимо использовать последнюю версию dbForge Studio.

Другие вопросы по тегам