У меня есть 2 объекта. Категория сущности с двумя столбцами: id, caName
. Служба сущностей с 4 столбцами: id, seName, sePrice, caId
. Столбец caId
в Сервисе содержит id
категории.symfony2 createAction с OneToMany
Моя цель делает createAction, editAction и deleteAction для Сервиса. У меня нет проблем с editAction и deleteAction. Однако мой createAction возвращает 500 (Internal Server Error).
Log:
Catchable Ошибка: Аргумент 1 передается AppBundle \ Entity \ Службы :: setCaId() должен быть экземпляром AppBundle \ Entity \ Категория, число дано, называемый в/Applications/MAMP/HTDOCS /symfony_luxurysalon/src/AppBundle/Controller/ServiceController.php на линии 67 и определил
Категория объект:
class Category
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\OneToMany(
* targetEntity="Service",
* mappedBy="caId"
*)
*/
private $id;
...
public function __construct()
{
$this->id = new ArrayCollection();
}
/**
* Get id
*
* @return Service
*/
public function getId()
{
return $this->id;
}
...
}
служба объект:
class Service
{
...
/**
* @var int
*
* @ORM\Column(name="ca_id", type="integer", length=2)
* @ORM\ManyToOne(targetEntity="Category", inversedBy="id", cascade={"persist","remove"})
* @ORM\JoinColumn(onDelete="CASCADE")
*/
private $caId;
...
/**
* Set caId
*
* @param \AppBundle\Entity\Category $caId
*
* @return Service
*/
public function setCaId(\AppBundle\Entity\Category $caId = null)
{
$this->caId = $caId;
return $this;
}
/**
* Get caId
*
* @return \AppBundle\Entity\Category
*/
public function getCaId()
{
return $this->caId;
}
}
Контроллер:
$entity = new Service();
$entity
->setSeName("test")
->setSePrice("200");
->setCaId("2");
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
Пожалуйста, разместите журнал для этого запроса. Без него можно было только догадываться, какова реальная проблема (особенно учитывая, что ваш код даже не является полным). – xabbuh