offline-agency / laravel-mongo-auto-sync
此包为Laravel项目中的MongoDB关系提供了更好的支持。
3.1.1
2024-09-27 15:19 UTC
Requires
- php: >=7.4
- ext-json: *
- ext-mongodb: *
- illuminate/container: ^5.0|^6.0|^7.0|^8.0
- illuminate/database: ^5.0|^6.0|^7.0|^8.0
- illuminate/events: ^5.0|^6.0|^7.0|^8.0
- illuminate/support: ^5.0|^6.0|^7.0|^8.0
- jenssegers/mongodb: ^3.6|^3.7|^3.8
Requires (Dev)
- orchestra/testbench: ^3.0|^4.0|^5.0|^6.0
- phpunit/phpcov: ^7.0|^8.0
- phpunit/phpunit: ^5.0|^6.0|^7.0|^8.0|^9.0
- dev-master
- 3.1.1
- 3.1.0
- 3.0.0
- 2.0
- 2.0-alpha.2
- 2.0-alpha.1
- 1.20
- 1.19
- 1.18
- 1.17
- 1.16
- 1.15
- 1.14
- 1.13
- 1.12
- 1.11
- 1.10
- 1.9
- 1.8
- 1.7
- 1.6
- 1.5
- 1.4
- 1.3
- 1.2
- 1.1
- 1.0
- dev-ManuelRomanato-add-new-php-and-mongodb-versions
- dev-analysis-RP3QKM
- dev-edit-readme-file
- dev-feat-upgrade-laravel-mongo-4.0
- dev-feat-add-support-php82
- dev-feat-add-phpstan
- dev-fix-sync-error
- dev-analysis-x023GO
- dev-develop
- dev-add-exception-on-updateRelationshipsWithSync
This package is auto-updated.
Last update: 2024-09-27 15:19:47 UTC
README
此包为MongoDB在Laravel项目中提供了更好的关系支持。在低级别上,所有CRUD操作都由jenssegers/laravel-mongodb处理。
安装
composer require offline-agency/laravel-mongo-auto-sync
先决条件
确保您已安装MongoDB PHP驱动。您可以在https://php.ac.cn/manual/en/mongodb.installation.php找到安装说明。
包版本兼容性
PHP版本兼容性
- 版本1:PHP 7.1, 7.2, 7.3
- 版本2:PHP 7.4
- 版本3:PHP 7.4-8.1
功能
- 在CRUD操作后同步具有关系的集合之间的更改
- EmbedsOne & EmbedsMany
无此包的示例
//create a new Article with title "Game of Thrones" with Category "TV Series" //assign data to $article $article->save(); /* Article::class { 'title' => 'Game of Thrones', 'category' => Category::class { 'name' => 'TV Series' } } */ //Retrieve 'TV Series' category $category = Category::where('name', 'TV Series')->first(); /* Category::class { 'name' => 'Game of Thrones', 'articles' => null } */
子文档文章未使用新文章更新。因此,您需要编写一些额外的代码才能在类别页面上看到新文章。同步的数量取决于关系的数量以及每个嵌入式Many关系中的条目数量。
总更新量 = ∑ (所有EmbedsMany关系中的条目) + ∑ (EmbedsOne关系)
正如您所看到的,额外的代码行可以迅速增加,您将编写许多冗余的代码。
使用我们的包的示例
//create a new Article with title "Game of Thrones" with Category "TV Series" $article->storeWithSync($request); /* Article::class { 'title' => 'Game of Thrones', 'category' => Category::class { 'name' => 'TV Series' } } */ //Retrieve 'TV Series' category $category = Category::where('name', 'TV Series')->first(); /* Category::class { 'name' => 'Game of Thrones', 'articles' => Article::class { 'title' => 'Game of Thrones' } } */
子文档文章已使用新文章更新,无需额外代码 🎉
您可以在类别页面上看到新文章,因为包通过读取模型设置为您同步了信息。
这些示例可以应用于数据库上的所有写入操作。
- 参考子文档 [待办事项]
- 将子文档作为模型处理,以便在写入操作期间利用Laravel ORM支持(无同步功能)[待测试]
- 将引用的子文档作为模型处理,以便在写入操作期间利用Laravel ORM支持(无同步功能)[待办事项]
- 高级类型支持
用例
- 博客:在此处查看演示
- 电子商务
- 移动应用程序或生成静态站点的API系统
- 任何需要快速读取操作和(慢速)写入操作,且可以后台运行的项目
文档
您可以在此处找到文档
测试
在您项目的路由中运行此命令
docker-compose up
现在运行测试
composer test
路线图 🚀
- 将目标同步重构为观察者模式,以便所有这些操作都可以在后台使用Laravel队列系统运行。这还将加速涉及写入操作的主要集合中的所有操作。
- 命令分析数据库:此命令将分析数据库以查找某些关系错误。例如,一个与不存在于类别子文档中的类别关联的文章。
- 重构save()方法,以便在不同步的情况下处理关系上的CRUD操作。
- 支持引用关系。
- 支持所有字段类型。
- 在销毁时,不要在其它集合中删除子文档。
- 增加更多测试。
- 嵌套关系。
- 基准测试 MongoDB 与 Mysql(读写操作)。
- 修复拼写错误。
贡献
有关详细信息,请参阅 贡献指南。
安全性
如果您发现任何与安全相关的问题,请通过电子邮件发送至 support@offlineagency.com,而不是使用问题跟踪器。
鸣谢
关于我们
Offline Agency 是一家位于意大利帕多瓦的网页设计公司。您可以在我们的网站上找到我们项目的概述 在这里。
许可
MIT 许可证(MIT)。有关更多信息,请参阅 许可文件。