Это очень странно, когда я пробую свой код на разработчике и работает нормально, но при работе выдает ошибку 500, пока я пытаюсь получить результаты.
var / logs / prod.log :
request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\FatalThrowableError: "Call to a member function setValue() on null" at /my_route/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php line 2745 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Call to a member function setValue() on null at /my_route/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php:2745)"} []
Лица, замешанные в:
Договор
class Contract
{
/**
* @var integer
* @ORM\Column(type="integer")
* @ORM\GeneratedValue()
* @ORM\Id()
*/
private $id;
/**
* @ORM\Column(type="integer", nullable=false)
*/
private $duration;
/**
* @ORM\Column(type="string", nullable=true)
*/
private $nifHolder;
/**
* @var Hotel
* @ORM\OneToOne(targetEntity="AppBundle\Entity\Hotel", inversedBy="contractHotel")
*/
private $hotel;
А Отель
class Hotel
{
/**
* @var integer
* @ORM\Column(type="integer")
* @ORM\GeneratedValue()
* @ORM\Id()
*/
private $id;
/**
* @var string
* @Assert\Length(
* max = 100,
* maxMessage = "El nombre no puede tener más de 100 caracteres"
* )
* @Assert\NotBlank(message="El nombre es obligatorio")
* @ORM\Column(type="string", length=100, nullable=false)
*/
private $name;
/**
* @var string
* @Assert\Length(
* max = 200,
* maxMessage = "La dirección no puede tener más de 200 caracteres"
* )
* @Assert\NotBlank(message="La dirección es obligatoria")
* @ORM\Column(type="string", length=200, nullable=false)
*/
private $address;
/**
* @var Contract
* @ORM\OneToOne(targetEntity="AppBundle\Entity\Contract", mappedBy="hotel")
*/
private $contractHotel;
Маршрут которого у меня 500, код ошибки:
/**
* @Route("/contract_list/{hotel}", name="view_contract")
* @Security("has_role('ROLE_ADMIN')")
*/
public function listContractAction(Request $request, Hotel $hotel )
{
/** @var EntityManager $em */
$em = $this->getDoctrine()->getManager();
$contract = $em->createQueryBuilder()
->select('c')
->from('AppBundle:Contract', 'c')
->where('c.hotel =:hotel')
->setParameter('hotel', $hotel->getId())
->getQuery()
->getResult();
if($contract == []) {
$contract = new Contract();
$em->persist($contract);
$contract->setDuration(0);
$contract->setHaveOpticalFiber(false);
$contract->setHaveRadioFibraPTP(false);
$contract->setOpticalFiberOperator('Not defined');
$contract->setHotel($hotel);
$em->flush();
}
return $this->render('contract/viewContract.html.twig', [
'contract' => array_key_exists(0, $contract) ? $contract[0] : $contract,
'hotel' => $hotel
]);
В базе данных все в порядке, mapped проверяется, даже когда я делаю $ em-> flush (); строка вставки
РЕДАКТИРОВАТЬ: Возможно ли, что моя ошибка вызвана тем, что я использую "composer install --optimize-autoload" перед добавлением сущностей?