itemvirtual/laravel-doctrine

Laravel 框架的 Doctrine 控制台命令

1.0.6 2023-03-14 15:44 UTC

This package is auto-updated.

Last update: 2024-09-14 19:25:54 UTC


README

Latest Version on Packagist Total Downloads

Laravel 框架的 Doctrine 控制台命令。
此包仅用于保持数据库同步(而不是迁移)。
更新、验证并从数据库生成 xml-mapping。

安装

您可以通过 composer 安装此包

composer require itemvirtual/laravel-doctrine

为了编辑默认配置,您可以执行: (使用 --force 选项进行更新)

php artisan vendor:publish --provider="Itemvirtual\LaravelDoctrine\LaravelDoctrineServiceProvider" --tag=config

Laravel 包含一些预定义的迁移,您可以使用此命令将其放置到位

php artisan vendor:publish --provider="Itemvirtual\LaravelDoctrine\LaravelDoctrineServiceProvider" --tag=laravel_default_migrations

用法

· 从数据库生成 xml-mapping

此命令仅当您已有现有数据库时有用,您通常不需要多次调用此方法

您可以为生成的文件提供目标路径。
您还可以选择仅生成特定表的映射。

php artisan doctrine:generate-mappings [--path=destination/path/to/xml-mappings] [--table=<table_name>]+
php artisan doctrine:generate-mappings --path=database/doctrine/xml-mappings --table=ursers --table=password_resets

选项

  --path[=PATH]     The path where your xml-mapping files will be generated
  --table[=TABLE]   The database tables to be generated (multiple values allowed)

· 验证映射和数据库

检查关联是否定义正确,以及其映射是否与数据库同步。
在执行验证之前,您可以删除所有实体。

php artisan doctrine:validate [-R | --remove-entities]

选项

  -R, --remove-entities  Delete current entities before generating new ones

· 更新数据库

运行更新数据库的查询,或在不查询的情况下预览它们。
在升级之前,您可以删除所有实体。
每次运行此命令时,都会调用 doctrine:generate-entities

php artisan doctrine:update [-D | --dump-sql] [-R | --remove-entities]
php artisan doctrine:update -DR

选项

  -D, --dump-sql         Dumps generated SQL statements to the console (does not execute them)
  -R, --remove-entities  Delete current entities before generating new ones

· 清除缓存

有时您可能会遇到缺失实体错误,删除缓存数据可以帮助修复它。

php artisan doctrine:clear-cache [--flush]

# This command will run these three commands at once, you can run them separately if you want 
php artisan doctrine:clear-cache:metadata [--flush]
php artisan doctrine:clear-cache:query [--flush]
php artisan doctrine:clear-cache:result [--flush]

选项

  --flush    If defined, cache entries will be flushed instead of deleted/invalidated

· 生成迁移(用于测试)

出于测试目的,您需要项目迁移。您可以使用以下命令生成它。
默认情况下,它们将生成在 tests/database/migrations

php artisan doctrine:migrations-generate [destination/path]
php artisan doctrine:migrations-generate --tables users,password_resets --ignore users,password_resets

参数

  path    If defined, it will generate the files in the given path, by default

选项

  -R, --remove                     Remove previous generated migration files
  -O, --output                     View migrations package console output
  -S, --single-file[=SINGLE-FILE]  Generate all migrations in a single file [default: "true"]
  -T, --tables[=TABLES]            A list of Tables or Views you wish to Generate Migrations separated by comma: users,products,labels
  -I, --ignore[=IGNORE]            A list of Tables or Views you wish to ignore, separated by comma: users,products,labels

"doctrine" 命名空间下可用的命令

  doctrine:clear-cache           Clear metadata, query and result cache of the various cache drivers
  doctrine:clear-cache:metadata  Clear all metadata cache of the various cache drivers
  doctrine:clear-cache:query     Clear all query cache of the various cache drivers
  doctrine:clear-cache:result    Clear all result cache of the various cache drivers
  doctrine:convert-mapping       Convert mapping information between supported formats
  doctrine:generate-entities     Generate entity classes and method stubs from your mapping information (xml-mappings)
  doctrine:generate-mappings     Generate xml-mappings from your database
  doctrine:remove-entities       Remove all entities
  doctrine:update                Update the database (or dump SQL) based on the entities information
  doctrine:validate              Validate mappings and synchronization with the database
  doctrine:migrations-generate   Generate laravel migration files from database 

您可以使用帮助命令查看每个命令的参数和选项

php artisan -help <command>

utf8mb4

要更改表的字符集和校对规则,请将此 options 添加到 entity

<options>
    <option name="collate">utf8mb4_unicode_ci</option>
    <option name="charset">utf8mb4</option>
</options>

mysql 5.7 的问题

mysql 版本低于 5.7.7 可能会抛出错误 "指定的键太长;最大键长度为 767 字节"
您必须验证任何类型为 stringunique=true 的列必须设置其最大长度 length="190"

重要,检查索引

变更日志

有关最近更改的更多信息,请参阅 变更日志

贡献

有关详细信息,请参阅 贡献指南

致谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件

Doctrine XML 映射文档和示例

Doctrine 文档 Doctrine 类型