В моем проекте symfony4 есть таблица / сущность ProductOperatingSystem и таблица / сущность OperatingSystem. OperatingSystem имеет одно поле 'name', которое содержит такие вещи, как 'debian', 'windows' и т. Д. ProductOperatingSystem содержит различные поля плюс одно поле, которое является внешним ключом, связанным с записью операционной системы.
Я сделал предложение дляproductOperatingSystem с symfony и может видеть все записи, показывать или редактировать одну. Проблема заключается в том, когда я пытаюсь создать запись productOperatingSystem. Я получил следующую ошибку:
Return value of App\Entity\ProductOperatingSystem::getOperatingSystem() must be an instance of App\Entity\OperatingSystem, null returned
Я понимаю, что это потому, что он ждет объекта, и ничего не предоставлено, потому что способ, которым создается моя сущность productOperatingSystem:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="App\Repository\ProductOperatingSystemRepository")
*/
class ProductOperatingSystem
{
/**
* @var int
*
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @var string
*
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $version;
/**
* @var OperatingSystem
*
* @ORM\ManyToOne(targetEntity="App\Entity\OperatingSystem", inversedBy="productOperatingSystems")
* @ORM\JoinColumn(nullable=false)
*/
private $operating_system;
/**
* @return int|null
*/
public function getId(): ?int
{
return $this->id;
}
/**
* @return string|null
*/
public function getVersion(): ?string
{
return $this->version;
}
/**
* @param string|null $version
* @return $this
*/
public function setVersion(?string $version): self
{
$this->version = $version;
return $this;
}
/**
* @return Operatingsystem
*/
public function getOperatingSystem(): Operatingsystem
{
return $this->operating_system;
}
/**
* @param Operatingsystem $operating_system
* @return ProductOperatingSystem
*/
public function setOperatingSystem(Operatingsystem $operating_system): self
{
$this->operating_system = $operating_system;
return $this;
}
}
Вотmy ProductOperatingSystemType.php:
<?php
namespace App\Form;
use App\Entity\ProductOperatingSystem;
use App\Entity\OperatingSystem;
use App\Repository\OperatingSystemRepository;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ProductOperatingSystemType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('version')
->add('is_installed')
->add('licence')
->add('operating_system');
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => ProductOperatingSystem::class,
]);
}
}
Я пробовал много вещей, но все еще потерялся. Я хотел бы иметь возможность выбирать из существующих записей операционной системы при создании элемента productOperatingSystem. Что мне для этого нужно сделать?