6dreams/doctrine-bulk

允许对 doctrine 实体进行批量操作的简单类。

2.0.0 2021-10-19 15:53 UTC

This package is auto-updated.

Last update: 2024-08-29 04:48:56 UTC


README

增加了使用 doctrine 模式在数据库中批量插入实体或数组的功能。

Build Status

备注

  • 适用于 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();
    }
}