Отношение много к одному с внешним ключом
Есть ли шанс сделать связь ManyToOne в Doctrine и переменную, которая будет содержать только идентификатор, а не весь объект? Или я могу иметь два поля, идентификатор и весь объект класса, оба сопоставлены с одним и тем же столбцом? Например:
/**
* @ORM\Table(name="product_category", uniqueConstraints={@ORM\UniqueConstraint(name="product_category_name_key", columns={"name"})})
* @ORM\Entity
*/
class ProductCategory{
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=50, nullable=false)
* @Groups({"list"})
*/
private $name;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
}
а также:
class PlanProduct{
/**
* @var \AppBundle\Entity\ProductCategory
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\ProductCategory")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="product_category_id", referencedColumnName="id")
* })
*
* @Assert\NotBlank()
* @Groups({"list"})
*/
private $productCategory;
}
Итак, прямо сейчас $ productCategory - это объект, который также содержит идентификатор и имя. Все, что я хочу, это содержать идентификатор. Я пытался сделать:
/**
* @var int
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\ProductCategory")
* @ORM\JoinColumn(name="transaction_category_id",referencedColumnName="id")
* @Assert\NotBlank()
* @Groups({"list"})
*/
private $transactionCategoryId;
Но я не думаю, что это правильный подход. По крайней мере, возможно ли это?