envor / laravel-schema-macros
为Laravel的schema构建器提供一些有用的(数据库级别)宏。需要Laravel 11。
v1.1.6
2024-07-30 17:00 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^11.0
- spatie/laravel-package-tools: ^1.16.2
Requires (Dev)
- larastan/larastan: *
- laravel/pint: *
- nunomaduro/collision: *
- orchestra/testbench: ^9.0
- pestphp/pest: ^2.33
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.2
- spatie/docker: ^1.12
README
为Laravel的schema构建器提供一些有用的(数据库级别)宏。需要Laravel 11。
安装
您可以通过composer安装此包
composer require envor/laravel-schema-macros
用法
databaseExists()
createDatabaseIfNotExists()
trashDatabase()
emptyTrash()
copyTable()
#databaseExists()
databaseExists()
方法确定指定的数据库是否存在
use Illuminate\Support\Facades\Schema; $database = database_path('my-new-database.sqlite'); Schema::connection('sqlite')->databaseExists($database); // false touch($database); Schema::connection('sqlite')->databaseExists($database); // true Schema::connection('mysql')->databaseExists('abc'); // false Schema::connection('mysql')->createDatabase('abc'); Schema::connection('mysql')->databaseExists('abc'); // true
#createDatabaseIfNotExists()
createDatabaseIfNotExists()
方法在数据库不存在的情况下创建它
use Illuminate\Support\Facades\Schema; $default = database_path('database.sqlite'); touch($default); Schema::connection('sqlite')->createDatabaseIfNotExists($default); // false Schema::connection('sqlite')->createDatabaseIfNotExists(database_path('another_database')); // true Schema::connection('mysql')->createDatabaseIfNotExists('brand_new_database'); // true
createDatabaseIfNotExists()
方法还将递归创建sqlite
数据库文件
$newFile = database_path('/new/directories/will/be/created/recursively/db.sqlite'); Schema::connection('sqlite')->createDatabaseIfNotExists($newFile); // true
#trashDatabase()
trashDatabase()
方法将数据库移动到trash
并对其进行时间戳
提示
默认情况下,SQLite数据库会被移动到本地存储磁盘上的.trash
目录。
您可以选择性地将另一个存储磁盘的名称作为第二个参数传递。
$database = database_path('database.sqlite'); Schema::connection('sqlite')->trashDatabase($database); // /home/forge/mysite.com/storage/app/.trash/2024-02-04_06-29-11_database.sqlite Schema::connection('mariadb')->trashDatabase('schema_demo'); // trashed_2024-02-04_06-44-42_schema_demo
#emptyTrash()
emptyTrash()
方法将擦除所有从当前连接可到达的已删除数据库
提示
要永久删除晚于给定年龄的数据库并保留较新的数据库,
您可以将您想保留的数据库的最大年龄(以天为单位)传递。
$database = database_path('database.sqlite'); Schema::connection('sqlite')->trashDatabase($database); // /home/forge/mysite.com/storage/app/.trash/2024-02-04_06-29-11_database.sqlite Schema::connection('sqlite')->emptyTrash(); // 1 Schema::connection('mysql')->trashDatabase('schema_demo'); // trashed_2024-02-04_06-44-42_schema_demo Schema::connection('mysql')->emptyTrash(); // 1
#copyTable()
copyTable()
方法将复制指定的表
$database = database_path('database.sqlite'); Schema::connection('sqlite')->copyTable('users'); // users_copy Schema::connection('sqlite')->copyTable('users', 'users_snapshot_1'); // users_snapshot_1
测试
重要
测试使用spatie/docker针对各种数据库服务器进行测试。
本地运行测试需要Docker!
composer test
变更日志
请参阅CHANGELOG获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING获取详细信息。
安全漏洞
请查看我们的安全策略了解如何报告安全漏洞。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。