铁路 / doctrine-array-hydrator
Doctrine 2 实体的数组到实体水化器
v3.0.0
2024-08-13 21:42 UTC
Requires
- php: ^8.2
- doctrine/annotations: ^2.0
- doctrine/orm: 2.19.*
- laravel/framework: ^11.9
- symfony/cache: ^6.0
Requires (Dev)
- orchestra/testbench: ^9.2
- phpunit/php-code-coverage: ^11.0.1
- phpunit/phpunit: ^11.0.1
This package is auto-updated.
Last update: 2024-09-13 21:51:56 UTC
README
简介
Doctrine 2 的水化器,可以将数组转换为所需的实体。
通过 Composer 安装
推荐通过 Composer 安装。
composer require pmill/doctrine-array-hydrator
示例
给定这个 Doctrine 实体
<?php namespace App\Entity; use Doctrine\ORM\Mapping as ORM; use Railroad\DoctrineArrayHydrator\Tests\Fixtures\Company; use Railroad\DoctrineArrayHydrator\Tests\Fixtures\Permission; /** * @ORM\Entity * @ORM\Table(name="users") */ class User { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue * * @var int */ protected $id; /** * @ORM\Column(type="string") * * @var string */ protected $name; /** * @ORM\Column(type="string") * * @var string */ protected $email; /** * @ManyToOne(targetEntity="Company") * * @var Company */ protected $company; /** * @OneToMany(targetEntity="Permission", mappedBy="product") * * @var Permission[] */ protected $permissions; }
我们可以使用数组来填充这个对象,例如
$data = [ 'name' => 'Fred Jones', 'email' => 'fred@example.com', 'company' => 2, 'permissions' => [1, 2, 3, 4] ]; $hydrator = new \pmill\Doctrine\Hydrator\ArrayHydrator($entityManager); $entity = $hydrator->hydrate('App\Entity\User', $data);
我们可以使用 JSON API 资源数据填充用户 文档
$data = [ 'attributes' => [ 'name' => 'Fred Jones', 'email' => 'fred@example.com', ], 'relationships' => [ 'company' => [ 'data' => ['id' => 1, 'type' => 'company'], ], 'permissions' => [ 'data' => [ ['id' => 1, 'type' => 'permission'], ['id' => 2, 'type' => 'permission'], ['id' => 3, 'type' => 'permission'], ['id' => 4, 'type' => 'permission'], ['name' => 'New permission'] ] ] ] ]; $hydrator = new \pmill\Doctrine\Hydrator\JsonApiHydrator($entityManager); $entity = $hydrator->hydrate('App\Entity\User', $data);
版权
Doctrine 数组到实体水化器 版权所有 (c) 2015 pmill (dev.pmill@gmail.com) 保留所有权利。