Соединение таблиц с сущностью (Symfony)

Я новичок в 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’.

Но $ tag в сущности Acasettag работает, что настраивается аналогично. Чего мне не хватает, все еще немного борюсь с этой частью Symfony.

Я не включил в этот пост все геттеры и сеттеры, только тот, который я создал для этого.

1

Решение

Почему ваш Actag-Хозяйственная шапка также tagId поле? Вам не нужен определенный Id-столбец на стороне владельца. Вы должны определить OneToMany.

Много Acassettag принадлежат одному Actag (из-за определения ManyToOne в Acassettag

Так что каждый Acassettag понадобится поле actag_id с идентификатором владения Actag который будет автоматически сгенерирован вашим ManyToOne-Определение

Когда вы создаете новый Acassettag Сущность и хотят «связать» ее с существующим Actag тебе нужно Acassettag

public setActag(Actag $actag)
{
$this->tag = $actag;

return $this;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector