<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
danilovl / object-to-array-transform-bundle example snippets
declare(strict_types=1);
namespace App\Entity;
use App\Entity\Traits\{
IdTrait,
LocationTrait
};
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="shop")
* @ORM\Entity(repositoryClass="App\Entity\Repository\ShopRepository")
*/
class Shop
{
use IdTrait;
use LocationTrait;
/**
* @ORM\Column(name="name", type="string", length=255, nullable=false)
*/
private ?string $name = null;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\City", inversedBy="shops")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="id_city", referencedColumnName="id", nullable=false)
* })
*/
private ?City $city = null;
public function getName(): ?string
{
return $this->name;
}
public function getCity(): ?City
{
return $this->city;
}
}
declare(strict_types=1);
namespace App\Entity;
use App\Constant\TranslationConstant;
use App\Entity\Traits\{
IdTrait,
LocationTrait,
TimestampAbleTrait
};
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="city")
* @ORM\Entity(repositoryClass="App\Entity\Repository\CityRepository")
* @ORM\HasLifecycleCallbacks()
*/
class City
{
use IdTrait;
use TimestampAbleTrait;
use LocationTrait;
/**
* @ORM\Column(name="name", type="string", nullable=false)
*/
protected ?string $name = null;
public function getName(): ?string
{
return $this->name;
}
}
declare(strict_types=1);
namespace App\Entity;
use App\Constant\TranslationConstant;
use App\Entity\Traits\{
IdTrait,
TimestampAbleTrait
};
use Doctrine\Common\Collections\{
Collection,
ArrayCollection
};
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="country")
* @ORM\Entity(repositoryClass="App\Entity\Repository\CountryRepository")
* @ORM\HasLifecycleCallbacks()
*/
class Country
{
use IdTrait;
use TimestampAbleTrait;
/**
* @ORM\Column(name="name", type="string", nullable=false)
*/
protected ?string $name = null;
/**
* @ORM\Column(name="code", type="string", nullable=false)
*/
protected ?string $code = null;
/**
* @ORM\OneToMany(targetEntity="App\Entity\City", mappedBy="country")
*/
protected Collection $cities;
public function getName(): ?string
{
return $this->name;
}
public function getCode(): ?string
{
return $this->code;
}
public function getCities(): Collection
{
return $this->cities;
}
}
declare(strict_types=1);
namespace App\Controller\Api;
use Danilovl\ObjectToArrayTransformBundle\Interfaces\ObjectToArrayTransformServiceInterface;
use Knp\Component\Pager\Pagination\PaginationInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class CountryController extends AbstractController
{
public function __construct(private ObjectToArrayTransformServiceInterface $objectToArrayTransformService)
{
}
public function getMethod(): JsonResponse
{
$countries = $this->get('app.facade.country')
->getAll();
$result = [];
foreach ($countries as $country) {
$transformer = $this->objectToArrayTransformService->transform('api_fields.default', $country);
$result[] = $transformer;
}
return new JsonResponse($result);
}
}