6dreams / doctrine-bulk
允许对 doctrine 实体进行批量操作的简单类。
2.0.0
2021-10-19 15:53 UTC
Requires
- php: >=8.0
- doctrine/orm: ^2.5
Requires (Dev)
- phpunit/phpunit: 8.5.8
README
增加了使用 doctrine 模式在数据库中批量插入实体或数组的功能。
备注
- 适用于 MySQL(也适用于 PostgreSQL)
- 与自定义 id 生成器兼容(需要少量调整)
- 没有自定义 id 生成器时,仅适用于 MySQL AI
- 允许检索第一个插入的 id \ 总更新数
- 此外,此包包含
HashedIdGenerator
,可用于从实体数据生成 char(25) id - 请注意,目前使用 HashedIdGenerator 的 UPDATE 查询不支持更改 Id
示例
默认用法
<?php declare(strict_types = 1); use \Doctrine\ORM\EntityManagerInterface; use \SixDreams\Bulk\BulkInsert; use \SixDreams\Bulk\BulkUpdate; /** * Class DbWrite */ class DbWrite { /** @var EntityManagerInterface */ private $manager; /** * Creates two users in one query. * * @return int */ public function createTwoUsers(): int { $firstInsertedId = (int) (new BulkInsert($this->manager, User::class)) ->addEntity(new User('user 1', 'password')) ->addEntity(new User('user 2', 'password')) ->execute(); return $firstInsertedId; } /** * Updates two users in database. */ public function updateTwoUsers(): void { (new BulkUpdate($this->manager, User::class)) ->addEntity(new User(1, 'user 1', 'new_user1_password')) ->addEntity(new User(2, 'user 1', 'new_user2_password'), ['password']) ->execute(); } }