symfony5之执行迁移文件:
php bin/console doctrine:migration:diff //symfony查看数据库和entity之间的属性差异,使entity和数据库保持一致
bin/console doctrine:migrations:generate //生成迁移文件
php bin/console doctrine:migrations:status //查看迁移状态
php bin/console doctrine:migrations:list //这个会累出所有的迁移信息
php bin/console doctrine:migrations:migrate //迁移所有文件
bin/console doctrine:migrations:execute 'DoctrineMigrations\Version20220224115156' //执行指定的迁移文件
php bin/console doctrine:migrations:execute --up 'DoctrineMigrations\Version20221209020525' // 默认的不加 up 或者 down,那么执行的是up操作
php bin/console doctrine:migrations:execute --down 'DoctrineMigrations\Version20221209020525'
php bin/console doctrine:migrations:version --delete DoctrineMigrations\Version20230831010609 //这个并没有从数据库删除轻易文件记录,但是我想是不是可以用来删除migrations下的迁移文件的
php bin/console manage-dashboard-items //symfony7执行指定的command
目前项目使用了 symfony7,所以再更新一些:
1.对于每次拉取项目之后,数据库需要执行如下操作
$ bin/console doctrine:migrations:migrate //生成表
$ bin/console doctrine:fixtures:load --append //应用填充数据到数据库
2.对于需要新建表操作的,一般按如下两个方式来弄
//手动创建迁移文件的另一种好用的方式
1>先手动创建指定的Entity, 添加需要的字段,以及关联关系,最后 set/get方法
2>通过下面的命令生成迁移文件,注意这个命令可能会把其它的Entity的相关信息也生成出来,需要根据实际需求处理,可以手动删掉本次不需要的迁移文件,同时 下面的方式还可以自动生成 index name,还是很标准的,比如: IDX_EED3565FA66BE622,就不用手动操作了
php bin/console doctrine:migration:diff
3>生成表
php bin/console doctrine:migration:migrate
这样,从整个Entity到数据库表的迁移就完成了
//直接生成迁移文件
1>bin/console doctrine:migrations:generate
2>在这个迁移文件里添加要的操作,比如 create alert 之类的
3>再去新建Entity
这样操作在laravel下是没有问题的,因为laravel就是这么干的,但是在 symfony下有问题,因为 symfony 下,Entity的属性要和表一致,否则可能会报错,综合考虑还是使用上面的方法更方便
symfony下通过 bin/console doctrine:migrations:generate 生成迁移文件,注意这里又对表做comment操作:
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20231128024850 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE TABLE ask_history_comments(id int not null auto_increment primary key, comment longtext default null, ask_history_id int not null, user_id int not null, admin_id int not null, created_at DATETIME default null, updated_at DATETIME default null
) DEFAULT CHARACTER SET utf8 COLLATE `utf8_unicode_ci` ENGINE = InnoDB COMMENT=\'aks history comments table\'');
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('DROP TABLE ask_history_comments');
}
}
symfony7下执行command:
php bin/console manage-user-items
