symfony-从另一个到另一个字段使用orm添加到dbtable

时间:2019-04-18 14:21:29

标签: symfony entity field symfony4 many-to-one

我的实体中存在多对一关联,我想获取另一个字段以将值放在db表中,而不是title字段中。

我的很多是可以设置为产品的类别。这一切都很好。 但是我有一个附加的productcode字段,我想在其中获取类别字母而不是标题。

我的类别实体

namespace App\Entity;

use Doctrine\Common\Collections\ArrayCollection;

use Doctrine\Common\Collections\Collection;

use Symfony\Component\HttpFoundation\File\File;

use Vich\UploaderBundle\Mapping\Annotation as Vich;

use Symfony\Component\Validator\Constraints as Assert;

use Doctrine\ORM\Mapping as ORM;

/**

 * @ORM\Entity()

 * @ORM\HasLifecycleCallbacks()

 */

class Category

{

    /**

     * @ORM\Id()

     * @ORM\GeneratedValue()

     * @ORM\Column(type="integer")

     */

    private $id;

    /**

     * @var string

     *

     * @ORM\Column(name="title", type="string")

     */

    private $title;


    /**

     * @var string

     *

     * @ORM\Column(name="categoryletter", type="string")

     */

    private $categoryletter;

    public function getId(): ?int

    {

        return $this->id;

    }

    public function getTitle(): ?string

    {

        return $this->title;

    }

    public function setTitle(string $title): self

    {

        $this->title = $title;

        return $this;

    }

    public function getCategoryletter(): ?string

    {

        return $this->categoryletter;

    }

    public function setCategoryletter(string $categoryletter): self

    {

        $this->categoryletter = $categoryletter;

        return $this;

    }

    /**

     * @return string

     */

     public function __toString()

     {
         return $this->title;

     }


}

在我的product.php实体中,我具有以下代码

    /**
     * @var Category
     *
     * @ORM\ManyToOne(targetEntity="Category")
     * @ORM\JoinColumn(name="category_id", referencedColumnName="id")
     */

    private $category;

在这里我有一个附加字段,用于根据类别等设置特定的产品代码。但是我不希望类别标题,但需要关联的类别字母

    /**
     * @ORM\PrePersist
     * @ORM\PreUpdate
     */
    public function setProductcode() 
    {

  {
     $part = $this->category;   

    $this->productcode = $part;

    }

我不知道如何获取类别实体的另一个字段。如果我将函数__toString更改为categoryletter而不是title,我确实会收到字母,但我只是出于一般目的而坚持使用title字段。如何获取categoryletter字段?还是不可能直接做到?

1 个答案:

答案 0 :(得分:1)

如果orm是在两个实体之间正确建立的,则可以使用getter:

     /**
     * set productCode
     *
     * @return Product
     */
public function setProductcode() 
   {
      $category = $this->category;   
      $this->productcode = $category->getCategoryletter();

      return $this;

     }