Страница 1 из 1
UUID как первичный ключ для Postgre
Добавлено: 2020.01.13, 19:33
t3mnikov
Всем привет!
Подскажите как в Yii2 при создании миграции для первичного ключа новой таблицы указать тип данных UUID, СУБД PostgreSQL.
Заранее благодарю!
Re: UUID как первичный ключ для Postgre
Добавлено: 2020.01.14, 11:08
yiiliveext
Делаете трейт
Код: Выделить всё
trait UuidTypeTrait
{
/**
* @return Connection the database connection to be used for schema building.
*/
abstract protected function getDb();
/**
* Creates a uuid column.
* @return ColumnSchemaBuilder the column instance which can be further customized.
*/
public function uuid()
{
return $this->getDb()->getSchema()->createColumnSchemaBuilder('uuid');
}
}
Подключаете его в классе вашей миграции, используете как обычно.
Код: Выделить всё
$this->createTable('{{%user}}', [
'id' => $this->uuid()->primaryKey(),
'username' => $this->string()->notNull()->unique(),
]);
Не проверял, но должно работать.
Re: UUID как первичный ключ для Postgre
Добавлено: 2020.01.14, 11:35
t3mnikov
Спасибо!
Re: UUID как первичный ключ для Postgre
Добавлено: 2020.01.14, 21:57
yiiliveext
t3mnikov писал(а): ↑2020.01.14, 11:35
Спасибо!
Хотя не, соврал немного. Вот так будет работать.
Код: Выделить всё
$this->createTable('{{%user}}', [
'id' => $this->uuid(),
'username' => $this->string()->notNull()->unique(),
]);
$this->addPrimaryKey('pk-user', '{{%user}}', 'id');