我很新的Symfony和Doctrine,我面臨一個問題,試圖設置類表繼承。我有一個名爲「TeamActionTarget」的父實體,還有兩個名爲「玩家」和「競爭」的孩子。 我父實體的模型如下:類表繼承,存儲庫 - > findByTypeId
// src/Van/TeamsBundle/Entity/TeamActionTarget.php
namespace Van\TeamsBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Van\TeamsBundle\Entity\TeamActionTarget
*
* @ORM\Entity
* @ORM\Table(name="van_teams_actions_targets")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="type_id", type="integer")
* @ORM\DiscriminatorMap({"1" = "Competition", "2" = "Player"})
*/
abstract class TeamActionTarget
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}
Doctrine2產生我父表中,有2場,「ID」和「TYPE_ID」,和2條兒童桌,用自己獨特的領域。 我現在想要做的是從表單中發佈的整數值中檢索所有的BY BY子類。
所以在控制器,我編寫了這一點:
$em->getRepository('VanTeamsBundle:TeamActionTarget')->findByTypeId($targetType);
但Symfony2的返回我一個錯誤: 實體 「範\ TeamsBundle \實體\ TeamActionTarget」 無場 「TYPEID」 這是真的。實體模型不包含這個字段,只有父類。所以我試圖在實體模型中添加這個字段,但是在嘗試更新實體時出現錯誤,說這個字段和鑑別器之間存在衝突。
我的問題很簡單,我如何檢索我的孩子BY TYPE,從表單發佈?
你必須設置一個'@ OnetoMany'關係從父母到子女 – Nisam
我應該在哪裏添加這個?在父實體還是在子實體中? – VaN
在父實體中,您可以添加$ TypeId和相應的getters和seters請參考octrine手冊http://docs.doctrine-project.org/zh/2.0.x/reference/association-mapping.html – Nisam