首页 > 解决方案 > 类“”不是有效的实体或映射的超类

问题描述

我遇到了这个错误。

request.CRITICAL: Uncaught PHP Exception Doctrine\ORM\Mapping\MappingException: "Class "DefaultBundle\Entity\ArticleData" is not a valid entity or mapped super class." at /var/www/html/mamasoku/shared/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException.php line 346 {"exception":"[object] (Doctrine\\ORM\\Mapping\\MappingException(code: 0): Class \"DefaultBundle\\Entity\\ArticleData\" is not a valid entity or mapped super class. at /var/www/html/mamasoku/shared/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException.php:346)"} []

我的 ArticleData 类是这样的,并确认它适用于 localhost,仅在 server 上,它不起作用。

@ORM\Entity认为我的代码和学说设置很好。

有什么需要检查的吗??

神秘的错误仅在服务器中显示。

<?php

namespace DefaultBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name = "articledata",indexes={
 * @ORM\Index(name="rt_id",columns={"rtNum"}),
 * @ORM\Index(name="publishedAt_id",columns={"publishedAt"})
 * })
 * @ORM\HasLifecycleCallbacks
 */
class ArticleData
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\OneToMany(targetEntity="DefaultBundle\Entity\HeadLine", mappedBy="topArticle")
     */
    private $headIds;

    /**
     * @ORM\ManyToOne(targetEntity="DefaultBundle\Entity\SiteData",inversedBy="articleIds")
     * @ORM\JoinColumn(name="site_article",referencedColumnName="id")
     * )
     */
    private $siteId;

    /**
     * @ORM\Column(type="integer")
     */
    private $rtNum = 0;

    /**
     * @ORM\Column(type="datetime",nullable=true)
     */
    private $rtUpdatedAt;

    /**
     * @ORM\Column(type="string",nullable=false,options={"collate"="utf8mb4_unicode_ci", "charset"="utf8mb4"})
     */
    private $title;

    /**
     * @ORM\Column(type="text",nullable=false,options={"collate"="utf8mb4_unicode_ci", "charset"="utf8mb4"})
     */
    private $description;

    /**
     * @ORM\Column(type="string",unique=true,nullable=false)
     */
    private $link;

    /**
     * Many Users have Many Groups.
     *
     * @ORM\ManyToMany(targetEntity="DefaultBundle\Entity\CatData", inversedBy="articleDatas")
     * @ORM\JoinTable(name="articledatas_catdatas")
     */
    private $catDatas;

    /**
     * @ORM\Column(type="string",unique=false,nullable=false)
     */
    private $subject;

    /**
     * @ORM\Column(type="datetime")
     */
    private $publishedAt;

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

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

    /**
     * @var bool
     * @ORM\Column(name="enabled",type="boolean")
     */
    private $enabled = true;

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

    /**
     * Set createdAt.
     *
     * @param \DateTime $createdAt
     *
     * @return Lesson
     */
    public function setCreatedAt($createdAt)
    {
        $this->createdAt = $createdAt;

        return $this;
    }

    /**
     * Get createdAt.
     *
     * @return \DateTime
     */
    public function getCreatedAt()
    {
        return $this->createdAt;
    }

    /**
     * Set updatedAt.
     *
     * @param \DateTime $updatedAt
     *
     * @return Lesson
     */
    public function setUpdatedAt($updatedAt)
    {
        $this->updatedAt = $updatedAt;

        return $this;
    }

    /**
     * Get updatedAt.
     *
     * @return \DateTime
     */
    public function getUpdatedAt()
    {
        return $this->updatedAt;
    }

    /**
     * Set enabled.
     *
     * @param bool $enabled
     *
     * @return Lesson
     */
    public function setEnabled($enabled)
    {
        $this->enabled = $enabled;

        return $this;
    }

    /**
     * Get enabled.
     *
     * @return bool
     */
    public function getEnabled()
    {
        return $this->enabled;
    }

    /**
     * @ORM\PreUpdate
     */
    public function preUpdate(): void
    {
        $this->updatedAt = new \DateTime();
    }

    /**
     * @ORM\PrePersist
     */
    public function prePersist(): void
    {
        $this->createdAt = new \DateTime();
        $this->updatedAt = new \DateTime();
    }

    public function __toString()
    {
        return (string) $this->getId();
    }

    /**
     * Constructor.
     */
    public function __construct()
    {
        $this->actIds   = new \Doctrine\Common\Collections\ArrayCollection();
        $this->catDatas = new \Doctrine\Common\Collections\ArrayCollection();
    }

    public function getFeedItemTitle()
    {
        return $this->getOriginalTitle();
    }

    public function getFeedItemDescription()
    {
        $url = 'http://www.erosom.info/show/'.$this->getId();

        return '<a href="'.$url.'"><img src="'.$this->getXvideoThumb().'">'.
            '</a><br />'.$this->getOriginalTitle();
    }

    public function getFeedItemPubDate()
    {
        return $this->getUpdatedAt();
    }

    public function getFeedItemLink()
    {
        //$url = $this->router->generateUrl('who', array('id' => $this->getXvideoId()));
        $url = 'http://www.erosom.info/show/'.$this->getId();

        return $url;
    }

    /**
     * Set rtNum.
     *
     * @param int $rtNum
     *
     * @return ArticleData
     */
    public function setRtNum($rtNum)
    {
        $this->rtNum = $rtNum;

        return $this;
    }

    /**
     * Get rtNum.
     *
     * @return int
     */
    public function getRtNum()
    {
        return $this->rtNum;
    }

    /**
     * Set url.
     *
     * @param string $url
     *
     * @return ArticleData
     */
    public function setUrl($url)
    {
        $this->url = $url;

        return $this;
    }

    /**
     * Get url.
     *
     * @return string
     */
    public function getUrl()
    {
        return $this->url;
    }

    /**
     * Set publishedAt.
     *
     * @param \DateTime $publishedAt
     *
     * @return ArticleData
     */
    public function setPublishedAt($publishedAt)
    {
        $this->publishedAt = $publishedAt;

        return $this;
    }

    /**
     * Get publishedAt.
     *
     * @return \DateTime
     */
    public function getPublishedAt()
    {
        return $this->publishedAt;
    }

    /**
     * Add siteId.
     *
     * @return ArticleData
     */
    public function addSiteId(\DefaultBundle\Entity\SiteData $siteId)
    {
        $this->siteId[] = $siteId;

        return $this;
    }

    /**
     * Remove siteId.
     */
    public function removeSiteId(\DefaultBundle\Entity\SiteData $siteId): void
    {
        $this->siteId->removeElement($siteId);
    }

    /**
     * Get siteId.
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getSiteId()
    {
        return $this->siteId;
    }

    /**
     * Set siteId.
     *
     * @param \DefaultBundle\Entity\SiteData $siteId
     *
     * @return ArticleData
     */
    public function setSiteId(\DefaultBundle\Entity\SiteData $siteId = null)
    {
        $this->siteId = $siteId;

        return $this;
    }

    /**
     * Set tag.
     *
     * @param string $tag
     *
     * @return ArticleData
     */
    public function setTag($tag)
    {
        $this->tag = $tag;

        return $this;
    }

    /**
     * Get tag.
     *
     * @return string
     */
    public function getTag()
    {
        return $this->tag;
    }

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

        return $this;
    }

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

    /**
     * Set description.
     *
     * @param string $description
     *
     * @return ArticleData
     */
    public function setDescription($description)
    {
        $this->description = $description;

        return $this;
    }

    /**
     * Get description.
     *
     * @return string
     */
    public function getDescription()
    {
        return $this->description;
    }

    /**
     * Set link.
     *
     * @param string $link
     *
     * @return ArticleData
     */
    public function setLink($link)
    {
        $this->link = $link;

        return $this;
    }

    /**
     * Get link.
     *
     * @return string
     */
    public function getLink()
    {
        return $this->link;
    }

    /**
     * Set subject.
     *
     * @param string $subject
     *
     * @return ArticleData
     */
    public function setSubject($subject)
    {
        $this->subject = $subject;

        return $this;
    }

    /**
     * Get subject.
     *
     * @return string
     */
    public function getSubject()
    {
        return $this->subject;
    }

    /**
     * Set rtUpdatedAt.
     *
     * @param \DateTime $rtUpdatedAt
     *
     * @return ArticleData
     */
    public function setRtUpdatedAt($rtUpdatedAt)
    {
        $this->rtUpdatedAt = $rtUpdatedAt;

        return $this;
    }

    /**
     * Get rtUpdatedAt.
     *
     * @return \DateTime
     */
    public function getRtUpdatedAt()
    {
        return $this->rtUpdatedAt;
    }

    /**
     * Add headIds.
     *
     * @return ArticleData
     */
    public function addHeadId(\DefaultBundle\Entity\HeadLine $headIds)
    {
        $this->headIds[] = $headIds;

        return $this;
    }

    /**
     * Remove headIds.
     */
    public function removeHeadId(\DefaultBundle\Entity\HeadLine $headIds): void
    {
        $this->headIds->removeElement($headIds);
    }

    /**
     * Get headIds.
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getHeadIds()
    {
        return $this->headIds;
    }

    /**
     * Add catData.
     *
     * @return ArticleData
     */
    public function addCatData(\DefaultBundle\Entity\CatData $catData)
    {
        $this->catDatas[] = $catData;

        return $this;
    }

    /**
     * Remove catData.
     *
     * @return bool TRUE if this collection contained the specified element, FALSE otherwise
     */
    public function removeCatData(\DefaultBundle\Entity\CatData $catData)
    {
        return $this->catDatas->removeElement($catData);
    }

    /**
     * Get catDatas.
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getCatDatas()
    {
        return $this->catDatas;
    }
}

我的包裹是这样的,

"require": {
    "php": ">=5.3.3",
    "doctrine/doctrine-bundle": "1.12.7",
    "doctrine/orm": "2.7.2",
    "eko/feedbundle": "1.2.9",
    "friendsofsymfony/jsrouting-bundle": "~1.1",
    "friendsofsymfony/rest-bundle": "@dev",
    "friendsofsymfony/user-bundle": "2.1.*",
    "gedmo/doctrine-extensions": "2.3.12",
    "jms/serializer-bundle": "3.4.1",
    "knplabs/knp-menu-bundle": "2.3.0",
    "nelmio/api-doc-bundle": "@dev",
    "sensio/distribution-bundle": "5.0.*",
    "sensio/framework-extra-bundle": "5.4.1",
    "sonata-project/admin-bundle": "3.45.0",
    "sonata-project/block-bundle": "3.18.4",
    "sonata-project/core-bundle": "3.17.0",
    "sonata-project/doctrine-orm-admin-bundle": "3.1.0",
    "stof/doctrine-extensions-bundle": "1.3.0",
    "symfony/monolog-bundle": "3.1.2",
    "symfony/security-bundle": "3.4.35",
    "symfony/swiftmailer-bundle": "3.2.*",
    "symfony/symfony": "3.4.35",
    "twig/extensions": "1.5.1"
},

我的教义配置在下面

# Doctrine Configuration
doctrine:
    dbal:
        driver:   "%database_driver%"
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  utf8mb4
        # if using pdo_sqlite as your database driver, add the path in parameters.yml
        # e.g. database_path: %kernel.root_dir%/data/data.db3
        # path:     %database_path%
       

    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
#        auto_mapping: true
        entity_managers:
            default:
                connection: default
                mappings:
                    FOSUserBundle: ~
                    DefaultBundle: ~

标签: phpsymfony

解决方案


推荐阅读