В моей базе данных есть две связанные таблицы.
AppBooking
AppBookingService
AppBookingService имеет внешний ключ для AppBooking
Я использую этот метод длясделайте вставку как в первую, так и во вторую таблицу.
public function bookingExecute($data){
try{
$this->em->beginTransaction();
$appBooking = $this->_fillAppBooking($data);
$this->em->persist($appBooking);
if(array_key_exists("appService",$data) && is_array($data['appService']) && count($data['appService']) > 0){
foreach($data['appService'] as $bookingService){
$appBookingService = $this->_fillAppBookingService($bookingService,$appBooking);
$this->em->persist($appBookingService);
$this->em->flush();
}
}
$this->em->flush();
$this->em->commit();
return $appBooking;
}catch (\Exception $ex){
$this->em->rollback();
throw new BookingException("",BookingError::BOOKING_QUERY_ERROR);
}
}
Данные записаны правильно
После этого в том же http-запросе я вызываю приведенный ниже метод для получения AppBooking.Данные службы в моей сущности
$appBooking = $this->bookingService->findOne($id);
Проблема в том, что полученная сущность AppBooking не содержит AppBookingService
Метод
$appBooking->getServices()->count()
возвращает 0
Если я сделаю тот же вызов в другом http-запросе, я получу желаемый результат.
Как будто доктрина не обновила сущность в этом же запросе
Это часть AppBooking
/**
* @var Collection
* @ORM\OneToMany(targetEntity="AppBookingService", mappedBy="idBooking")
*/
private $services;
public function __construct() {
$this->services = new ArrayCollection();
}
Это часть AppBookingService
/**
* @var \Entity\Entity\AppBooking
*
* @ORM\ManyToOne(targetEntity="Entity\Entity\AppBooking", inversedBy="services")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="ID_BOOKING", referencedColumnName="ID_BOOKING", nullable=true)
* })
*/
private $idBooking;