PHP code example of indaxia / doctrine-orm-transformations
1. Go to this page and download the library: Download indaxia/doctrine-orm-transformations library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
indaxia / doctrine-orm-transformations example snippets
use \Indaxia\OTR\ITransformable;
use \Indaxia\OTR\Traits\Transformable;
use \Indaxia\OTR\Annotations\Policy;
class Car implements ITransformable {
use Transformable;
/** @ORM\Id
* @ORM\Column(type="integer") */
protected $id;
/** @Policy\To\Skip
* @ORM\Column(type="string") */
protected $keys;
/** @ORM\OneToMany(targetEntity="Wheel") ... */
protected $wheels;
public function getId();
public function getKeys() ...
public function setKeys($v) ...
...
}
class Engine implements ITransformable {
use Transformable;
/** @ORM\Id
* @ORM\Column(type="integer") */
protected $id;
/** @Policy\To\Skip
* @ORM\Column(type="string") */
protected $serialNumber;
public function getId();
public function getSerialNumber() ...
public function setSerialNumber($v) ...
...
}
class Wheel implements ITransformable {
use Transformable;
/** @ORM\Id
* @ORM\Column(type="integer") */
protected $id;
/** @Policy\Skip
* @ORM\Column(type="string") */
protected $brakes;
/** @ORM\Column(type="string") */
protected $model;
public function getId();
public function getBrakes() ...
public function setBrakes($v) ...
public function getModel() ...
public function setModel($v) ...
...
}
// Using global policy
$result = $car->toArray();
// Using local policy
$result = $car->toArray((new Policy\Auto)->inside([
'wheels' => new Policy\To\FetchPaginate(['offset'=0, 'limit'=4, 'fromTail'=false])
]));
// Local policy overrides global policy
$result = $car->toArray((new Policy\Auto)->inside([
'keys' => new Policy\Auto
]));
$carB = new Car();
// Simple way
$carB->fromArray($result, $entityManager);
// With Policy
$carB->fromArray($result, $entityManager, (new Policy\Auto())->inside([
'keys' => mew Policy\Skip,
'engine' => (new Policy\Auto())->inside([
'serialNumber' => new Policy\From\DenyNewUnset
]),
'wheels' => (new Policy\Auto())->inside([
'brakes' => new Policy\From\Auto
])
]);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.