symfony - 从 many-to-one 获取另一个字段以使用 orm 添加到 dbtable
symfony - getting another field from a many-to-one to add to dbtable with orm
我的实体中有一个 many-to-one 关联,我想获取另一个字段以将值放入数据库 table 而不是标题字段。
my many 是可以为产品设置的类别。这一切都很好。
但是我有一个额外的产品代码字段,我想在其中获取类别字母而不是标题。
我的类别实体
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 字段只是为了一般 purpose.How 我能得到 categoryletter 字段吗?或者这是不可能的直接方式?
如果两个实体之间的 orm 正确,您可以使用 getter :
/**
* set productCode
*
* @return Product
*/
public function setProductcode()
{
$category = $this->category;
$this->productcode = $category->getCategoryletter();
return $this;
}
我的实体中有一个 many-to-one 关联,我想获取另一个字段以将值放入数据库 table 而不是标题字段。
my many 是可以为产品设置的类别。这一切都很好。 但是我有一个额外的产品代码字段,我想在其中获取类别字母而不是标题。
我的类别实体
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 字段只是为了一般 purpose.How 我能得到 categoryletter 字段吗?或者这是不可能的直接方式?
如果两个实体之间的 orm 正确,您可以使用 getter :
/**
* set productCode
*
* @return Product
*/
public function setProductcode()
{
$category = $this->category;
$this->productcode = $category->getCategoryletter();
return $this;
}