Вы можете создать Site
при отправке данных:
{
url: http://exmaple2.com/2/3/4,
name: super_product,
host: {"host": "example.com"}
}
Api-платформа должна создать хост, если объекты правильно определены и свойство host
доступно для записи.
Или вы можете использовать Прослушиватель событий Doctrine , для этого он будет срабатывать автоматически при создании Product
.
Создание класса подписчика:
// src/EventListener/SearchIndexerSubscriber.php
namespace App\EventListener;
use Doctrine\Common\EventSubscriber;
use Doctrine\Common\Persistence\Event\LifecycleEventArgs;
use App\Entity\Product;
use Doctrine\ORM\Events;
class ProductListener implements EventSubscriber
{
public function getSubscribedEvents()
{
return array(
Events::postPersist,
);
}
public function postPersist(LifecycleEventArgs $args)
{
$entity = $args->getObject();
if ($entity instanceof Product) {
// Create site
$site = new Site();
// Set data you need
$site->setUrl(…);
// Create site
$entity->setSite($site);
$entityManager = $args->getObjectManager();
$entityManager->persist($product);
$entityManager->flush();
}
}
}
Вы можете найти различные события в Документация доктрины .
Пометить службу тегом doctrine.event_subscriber
:
App\EventListener\ProductListener:
tags:
- { name: doctrine.event_subscriber }