Symfony4/Doctrine - 将"_id"表单数据属性直接映射到实体



我正在尝试提交一个包含"company_id"的 POST 请求。

我想将其映射到Doctrine/Symfony4实体的属性"公司"。此字段存储在"company_id"列中。

我的表单非常普通,并使用以下方法来映射传入的请求:

->add('company_id', EntityType::class, [
'class' => Company::class,
])

问题是,我的模型类只有方法"getCompany"和"setCompany",这会导致以下错误:

{
"code": 500,
"message": "Neither the property "company_id" nor one of the methods "getCompanyId()", "companyId()", "isCompanyId()", "hasCompanyId()", "__get()" exist and have public access in class "App\ServiceProviderBundle\Entity\Offer"."
}

我已经通过创建一些代理方法(例如直接代理"getCompany"的"getCompanyId"(做了一个解决方法,但这感觉很黑客和不正确,必须有一种方法可以直接进行此映射。

试试这个:

->add('company', EntityType::class, [
'class' => Company::class,
])

因为我认为在您的实体中有一个名为company而不是company_id的属性,company_id是数据库中的列名

解决方案 - 我创建了一个中间的"数据传输对象"类来为我做映射。它有一个返回对象实体的"getOfferEntity(("函数。

相关内容

  • 没有找到相关文章

最新更新