当前位置: 首页 > 知识库问答 >
问题:

Symfony2未找到映射文件

贺雅健
2023-03-14

我正在处理symfony2,并发现此错误:

未找到名为“Acme”的映射文件。博客包。实体帖子。类“Acme\BlogBundle\Entity\Posts”的php。500内部服务器错误-映射异常

我生成实体php应用程序/控制台原则:生成:实体

实体名称:AcmeBlogBundle:Post

格式:php

我将所有内容放在Acme:BlogBundle:Entity目录中。

这是我使用getter和setter方法的Entity Post类:

<?php

namespace Acme\BlogBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Posts
 */
class Posts
{
    /**
     * @var integer
     */
    private $id;

    /**
     * @var string
     */
    private $title;

    /**
     * @var string
     */
    private $shortText;

    /**
     * @var string
     */
    private $longText;

    /**
     * @var string
     */
    private $author;

    /**
     * @var \DateTime
     */
    private $dateCreated;

    /**
     * @var \DateTime
     */
    private $dateModified;


    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set title
     *
     * @param string $title
     * @return Posts
     */
    public function setTitle($title)
    {
        $this->title = $title;

        return $this;
    }

    /**
     * Get title
     *
     * @return string 
     */
    public function getTitle()
    {
        return $this->title;
    }

    /**
     * Set shortText
     *
     * @param string $shortText
     * @return Posts
     */
    public function setShortText($shortText)
    {
        $this->shortText = $shortText;

        return $this;
    }

    /**
     * Get shortText
     *
     * @return string 
     */
    public function getShortText()
    {
        return $this->shortText;
    }

    /**
     * Set longText
     *
     * @param string $longText
     * @return Posts
     */
    public function setLongText($longText)
    {
        $this->longText = $longText;

        return $this;
    }

    /**
     * Get longText
     *
     * @return string 
     */
    public function getLongText()
    {
        return $this->longText;
    }

    /**
     * Set author
     *
     * @param string $author
     * @return Posts
     */
    public function setAuthor($author)
    {
        $this->author = $author;

        return $this;
    }

    /**
     * Get author
     *
     * @return string 
     */
    public function getAuthor()
    {
        return $this->author;
    }

    /**
     * Set dateCreated
     *
     * @param \DateTime $dateCreated
     * @return Posts
     */
    public function setDateCreated($dateCreated)
    {
        $this->dateCreated = $dateCreated;

        return $this;
    }

    /**
     * Get dateCreated
     *
     * @return \DateTime 
     */
    public function getDateCreated()
    {
        return $this->dateCreated;
    }

    /**
     * Set dateModified
     *
     * @param \DateTime $dateModified
     * @return Posts
     */
    public function setDateModified($dateModified)
    {
        $this->dateModified = $dateModified;

        return $this;
    }

    /**
     * Get dateModified
     *
     * @return \DateTime 
     */
    public function getDateModified()
    {
        return $this->dateModified;
    }
}

在我的控制器中,我首先在定义控制器名称空间之后设置Post实体。

use Acme\BlogBundle\Entity\Posts;

之后我创建方法

    public function AddAction()
    { 

        // $post = Acme\BlogBundle\Entity\Posts()

         $posts = new Posts();
         $posts->setTitle('Test Title');

         $em = $this->getDoctrine()->getManager();
         $em->persist($posts);
         $em->flush();
}

下面是堆栈跟踪输出

[1] 条令\Common\Persistence\MappingException:未找到名为“Acme”的映射文件。博客包。实体帖子。类“Acme\BlogBundle\Entity\Posts”的php。不适用于/var/www/html/Symfony/vendor/doctrine/common/lib/doctrine/common/Persistence/MappingException。php第74行

在教义\通用\持久性\映射\映射异常::映射文件不发现('Acme\BlogBundle\Entity\Posts','Acme.博客包。实体。Posts.php) /var/www/html/Symfony/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/DefaultFileLocator.php117行

at原则\Common\Persistence\Mapping\Driver\DefaultFileLocator-

at教义\通用\持久性\映射\驱动\PHPDriver-

在原则\Common\Persistence\Mapping\Driver\MappingDriverCain-

at Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata(object(ClassMetadata),

/var/www/html/Symfony/vendor/doctrine/common/lib/doctrine/common/Persistence/Mapping/AbstractClassMetadataFactory中的null、false、array()。php第302行

at Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata('Acme\BlogBundle\Entity\Posts')
    in /var/www/html/Symfony/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php

205号线

位于条令\Common\Persistence\Mapping\AbstractClassMetadataFactory-

at条令\ORM\EntityManager-

在条令\ORM\UnitOfWork-

在条令\ORM\UnitOfWork-

at条令\ORM\EntityManager-

在Acme\BlogBundle\Controller\DefaultController-

在/var/www/html/Symfony/app/bootstrap中调用数组(数组(对象(DefaultController),'indexAction'),数组()。php。缓存线2815

在Symfony\Component\HttpKernel\HttpKernel-

在Symfony\Component\HttpKernel\HttpKernel-

在Symfony\Component\HttpKernel\DependencyInjection\ContainerWarehttpkernel-

在Symfony\Component\HttpKernel\Kernel-

更新:

新实体测试:

<?php
// src/Acme/BlogBundle/Entity/Test.php
namespace Acme\BlogBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Table()
 * @ORM\Entity
 */
class Test
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="title", type="string", length=255)
     */
    private $title;

    /**
     * @var string
     *
     * @ORM\Column(name="short_text", type="string", length=255)
     */
    private $shortText;

    /**
     * @var string
     *
     * @ORM\Column(name="long_text", type="text")
     */
    private $longText;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="date_created", type="datetime")
     */
    private $dateCreated;


    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set title
     *
     * @param string $title
     * @return Test
     */
    public function setTitle($title)
    {
        $this->title = $title;

        return $this;
    }

    /**
     * Get title
     *
     * @return string 
     */
    public function getTitle()
    {
        return $this->title;
    }

    /**
     * Set shortText
     *
     * @param string $shortText
     * @return Test
     */
    public function setShortText($shortText)
    {
        $this->shortText = $shortText;

        return $this;
    }

    /**
     * Get shortText
     *
     * @return string 
     */
    public function getShortText()
    {
        return $this->shortText;
    }

    /**
     * Set longText
     *
     * @param string $longText
     * @return Test
     */
    public function setLongText($longText)
    {
        $this->longText = $longText;

        return $this;
    }

    /**
     * Get longText
     *
     * @return string 
     */
    public function getLongText()
    {
        return $this->longText;
    }

    /**
     * Set dateCreated
     *
     * @param \DateTime $dateCreated
     * @return Test
     */
    public function setDateCreated($dateCreated)
    {
        $this->dateCreated = $dateCreated;

        return $this;
    }

    /**
     * Get dateCreated
     *
     * @return \DateTime 
     */
    public function getDateCreated()
    {
        return $this->dateCreated;
    }
}

这又是一个错误

PHP应用/控制台原则:生成:实体AcmeBlogBundle

为bundle“AcmeBlogBundle”生成实体

                                                                [RuntimeException]                                               

捆绑包“AcmeBlogBundle”不包含任何映射实体。

条令:生成:实体[--path=“…”][--无备份]名称

共有3个答案

华化
2023-03-14

如果要使用注释来定义映射,只需在生成实体时选择“注释”选项即可。

令狐运珧
2023-03-14

我犯了一个错误,通过控制台添加了一个新实体,映射类型为“php”,而不是默认的“annotations”。即使不触及生成的类,我的站点也不会立即加载。它为我的用户类引发了这个MappingException。

我删除了新的实体类,认为这将修复它,以及我能想到的一切。然后我查看了我的app/Resources/config目录。有一个新的目录叫做条令。它包含导致问题的实体的映射文件。当我删除这个目录和文件时,异常消失了。

华烈
2023-03-14

您应该为字段添加映射信息。阅读更多

像这样:

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;
 类似资料:
  • 尝试使用Streaming在Hadoop上运行mapduce作业。我有两个ruby脚本wcmapper.rb和wcreducer.rb.我正尝试运行该作业,如下所示: 这将导致控制台出现以下错误消息: 查看任何任务的失败尝试可以看出: 我知道hadoop需要复制map和减少器脚本以供所有节点使用,并相信这是-file参数的目的。然而,脚本似乎没有被复制到hadoop期望找到它们的位置。控制台指示它

  • 我正在构建一个REST API, 和ActiveBid类 和我的泽西请求映射器,它具有获取数据的逻辑 有人能帮我吗?我不知道和卡桑德拉共事会这么难。

  • 我是使用Spring SOAP W的新手。我学习了许多教程,并试图适应这个示例的需要,但从未成功,我得到了这样的消息:找不到[SaajSoapMessage { http://ws . veritran . net/vtAuthServer/types } validatePOTCRequest]的endpoint映射 这是梅的代码: 这是我的终点: 这是我的服务级别: 这是我的WSDL定义 最后

  • 前端将这个json发送到我的API 控制器:

  • 卡桑德拉表列: Java实体: 当执行从表列“pickuploc”中选择查询时,并没有完全映射到实体中定义的picupLocal属性。 这是我得到的回应: 使用Spring数据卡桑德拉1.5.8