我正在尝试提交一个包含"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(("函数。