指尖上的记忆指尖上的记忆
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub

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