symfony - получение другого поля из «многие-к-одному» для добавления в dbtable с помощью orm - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть связь многие-к-одному в моей сущности, и я хочу взять другое поле, чтобы поместить значение в таблицу базы данных вместо поля заголовка.

Мои многие категории, которые могут быть установлены для продукта.это все работает отлично.Однако у меня есть дополнительное поле кода продукта, где я хочу получить букву категории вместо заголовка.

сущность моей категории

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 Ответ

1 голос
/ 18 апреля 2019

Если между двумя сущностями правильно сформирована форма, вы можете просто использовать геттер:

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

      return $this;

     }
...