因此,情况是这样的:我有一个实体ProductWhisky,它是ProductAbstract的子类,其中我引用了Product实体(一对一)。产品与ProductProducer具有多对一关联。我正在使用Easyadmin3来编辑这个ProductWhisky。
这是我的ProductWhiskyCrudController的一部分:
public function configureFields(string $pageName): iterable
{
// more fields
yield AssociationField::new('productProducer', 'Producent');
// even more fields
}这是我的ProductWhiskyEntity:
class ProductWhisky extends ProductAbstract
{
use ProductTrait;
//props and other methods specific to ProductWhisky
}ProductTrait
trait ProductTrait
{
/**
* @ORM\OneToOne(targetEntity="App\Entity\Product", cascade={"persist", "remove"})
* @ORM\JoinColumn(nullable=false)
*/
private $product;
public function getProduct(): ?Product
{
return $this->product;
}
public function setProduct(Product $product): self
{
$this->product = $product;
return $this;
}
/**
* @return ProductProducer|null
*/
public function getProductProducer(): ?ProductProducer
{
if ($this->getProduct()) {
return $this->getProduct()->getProducer();
}
return null;
}产品实体:
class Product
{
// more props
/**
* @ORM\ManyToOne(targetEntity="App\Entity\ProductProducer", inversedBy="products", cascade={"persist"})
* @ORM\JoinColumn(nullable=false)
*/
private $producer;
// more props and methods
public function getProducer(): ?ProductProducer
{
return $this->producer;
}
public function setProducer(?ProductProducer $producer): self
{
$this->producer = $producer;
return $this;
}因此,当我调用ProductWhiskyCrudController时,我总是收到消息The "productProducer" field is not a Doctrine association, so it cannot be used as an association field.
在EasyAdmin 2中,我这样做:
form:
fields:
- property: 'productProducer'
label: 'Producent'
type: entity
type_options: {class: 'App\Entity\ProductProducer', required: true}你知道我怎么才能解决这个问题吗?
所有最好的时间
发布于 2020-10-28 16:51:32
你应该改变你的
yield AssociationField::new('productProducer', 'Producent');使用
yield AssociationField::new('producer', 'Producent');因为当您引用实体时,窗体必须引用字段。
https://stackoverflow.com/questions/64564716
复制相似问题