我是Symfony的新手,无法设置我的实体。我希望能够从我的Acasset实体访问标签名称。
以下是相关实体:
class Actag
{
/**
* @var string
*
* @ORM\Column(name="tag_name", type="string", length=200, nullable=true)
*/
private $tagName;
/**
* @var integer
*
* @ORM\Column(name="tag_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $tagId;
/**
* Acassettag
*
* @ORM\Table(name="acAssetTag", indexes={@ORM\Index(name="IDX_7C4A2A745DA1941", columns={"asset_id"}), @ORM\Index(name="IDX_7C4A2A74BAD26311", columns={"tag_id"})})
* @ORM\Entity
*/
class Acassettag
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var \AdminBundle\Entity\Acasset
*
* @ORM\ManyToOne(targetEntity="AdminBundle\Entity\Acasset", inversedBy="asset", cascade="PERSIST")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="asset_id", referencedColumnName="asset_id")
* })
*/
private $asset;
/**
* @var \AdminBundle\Entity\Actag
*
* @ORM\ManyToOne(targetEntity="AdminBundle\Entity\Actag")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="tag_id", referencedColumnName="tag_id")
* })
*/
private $tag;
/**
* Acasset
*
* @ORM\Table(name="acAsset", indexes={@ORM\Index(name="IDX_3B81679E68BA92E1", columns={"asset_type"}), @ORM\Index(name="IDX_3B81679E12469DE2", columns={"category_id"})})
* @ORM\Entity(repositoryClass="AdminBundle\Repository\AcAssetRepository")
*/
class Acasset
{
/**
* @var string
*
* @ORM\Column(name="asset_name", type="string", length=100, nullable=false)
*/
private $assetName;
/**
* @var integer
*
* @ORM\Column(name="asset_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $assetId;
/**
* @var \AdminBundle\Entity\Acassettype
*
* @ORM\OneToOne(targetEntity="AdminBundle\Entity\Acassettype", mappedBy="asset", fetch="EAGER", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="asset_type_id", referencedColumnName="asset_type_id")
* })
*/
private $assetType;
/**
* @var \AdminBundle\Entity\Actag
*
* @ORM\ManyToOne(targetEntity="AdminBundle\Entity\Actag")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="tag_id", referencedColumnName="tag_id")
* })
*/
private $assetTags;
/**
* Set tag
*
* @param \AdminBundle\Entity\Actag $tag
*
* @return Acassettag
*/
public function setAssetTags(\AdminBundle\Entity\Actag $tag = null)
{
$this->tag = $tag;
return $this;
}
/**
* Get tag
*
* @return \AdminBundle\Entity\Actag
*/
public function getAssetTags()
{
return $this->tag;
}
因此,在我的Acasset实体中,我创建了$ assetTags,但出现错误:无效的列名'tag_id'。
但Acasettag实体中的$ tag起作用,其设置方法相同。我缺少什么,仍然在Symfony的这一部分中苦苦挣扎。
我没有在这篇文章中包括所有的获取器和设置器,只是我为此而创建的。
答案 0 :(得分:0)
为什么您的Actag
-实体帽子还是tagId
字段?您不需要在拥有侧上定义Id列。您必须定义一个OneToMany。
许多Acassettag
由一个Actag
拥有(由于Acassettag
中的ManyToOne-Definition
因此,每个Acassettag
都将需要字段actag_id
和拥有的Actag
的ID,该字段将由您的ManyToOne
-定义自动生成
创建新的Acassettag
实体并将其与现有Actag
“连接”时,您需要Acassettag
public setActag(Actag $actag)
{
$this->tag = $actag;
return $this;
}