尝试使用 symfony 创建 Web 服务时出现问题

Posted

技术标签:

【中文标题】尝试使用 symfony 创建 Web 服务时出现问题【英文标题】:Problem while trying to create web service with symfony 【发布时间】:2020-09-02 07:34:38 【问题描述】:

所以我正在构建一个移动/网络应用程序,其中包含用于网络端的 symfony 框架和用于移动端的代号。尝试运行我的添加函数时遇到错误:“关联字段“PBundle\Entity\Projet#$Partenaire”的实体类型的预期值,改为“字符串”。”

我的数据库中实际上有两个相关的表:Projet 和 Partenaire。 Projet 获得了一个引用 Partenaire id 的外键。 这是我的代码:

    
        $em = $this->getDoctrine()->getManager();
        $projets = new Projet();
        $projets->setNomProjet($request->get('nomProjet'));
        $projets->setDescription($request->get('description'));
        $projets->setDate($request->get('date'));
        $projets->setNombreParticipant($request->get('nombreParticipant'));
        $projets->setPartenaire($request->get('Partenaire'));
        $em->persist($projets);
        $em->flush();
        $serializer = new Serializer([new ObjectNormalizer()]);
        $formatted = $serializer->normalize($projets);
        return new JsonResponse($formatted);
    

谁能帮帮我?

【问题讨论】:

【参考方案1】:

错误在这一行:$projets->setPartenaire($request->get('Partenaire')); 您首先需要通过id 获取Partenaire,然后在此处设置(不是实体的id)。

类似这样的:

$partnaireRepo = $em->getRepository(Entity\Partenaire::class);
$partenaire = $partnaireRepo->find($request->get('Partenaire'));
if ($partenaire) 
    $projets->setPartenaire($partenaire);

这应该可行。

【讨论】:

我试图改变它并得到这个错误(类 'PBundle\Controller\Partenaire' 不存在)然后我试图改变这一行 $partnaireRepo = $em->getRepository('PBundle :伙伴关系');并得到另一个错误(errorError: Call to a member function format() on string) 试试$em->getRepository(Entity\Partenaire::class)或者这个Entity类文件在哪里?

以上是关于尝试使用 symfony 创建 Web 服务时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 Azure CLI 创建 Web 应用时出现限制错误

cURL 错误 60:尝试使用 symfony 时出现 ssl 认证问题

尝试使用 Windows 7 为 Symfony2 项目转储资产时出现运行时异常

尝试获取关系中的数据时出现 Symfony 错误

访问asmx Web服务时出现错误请求

添加新捆绑包时出现Symfony3错误