【问题标题】:Entity was not found未找到实体
【发布时间】:2013-12-09 19:45:06
【问题描述】:

我在 symfony2 中只有 1 个类有问题, 每次我尝试在模板中使用实体时,它都会说找不到实体。 然而,在本地主机上一切正常(开发和生产环境都工作),但是当我将它部署到远程网络服务器上时,一切都停止了。

我已经重启了 httpd 并尝试了不同的方法。

Entity UserApplication 与 Application 实体有关联,我正在尝试通过模板文件中的 UserApplication 从应用程序中获取名称

这是我抛出的错误信息,

[ERROR]: 渲染过程中抛出异常 模板(“找不到实体。”)在 “MyBundle:Application:applications_user.html.twig”在第 34 行。 代码:0(文件:mylocation/20131209193528/app/cache/prod/classes.php, 行:4485)

片段:applications_user.html.twig

{% extends 'MaximCMSBundle:Default:index.html.twig' %}

{% block body %}
    <div class="page">
        <h3 class="page-header">Applications</h3>
        <div class="page-content">
            <ul class="menu menu-clean">
                {% for application in applications %}
                    <li>
                        <a href="{{ path('application_view', {'id' : application.id, 'name' : application.application.name}) }}"><span>{{ application.application.name }}</span></a>
                    </li>
                {% else %}
                    <p>There are no open applications at the moment</p>
                {% endfor %}
            </ul>
        </div>
    </div>
{% endblock %}

实体用户应用程序

<?php

namespace MyName\Module\ApplicationBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * UserApplication
 *
 * @ORM\Table(name="user_application")
 * @ORM\Entity
 */
class UserApplication {
    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    protected $id;

    /**
     * @var User
     *
     * @ORM\ManyToOne(targetEntity="MyName\MyBundle\Entity\User")
     */
    protected $user;

    /**
     * @var json_array $details
     *
     * @ORM\Column(name="details", type="json_array", nullable=false)
     */
    protected $details;

    /**
     * @var \DateTime $date
     *
     * @ORM\Column(name="date", type="datetime", nullable=true)
     */
    protected $date;

    /**
     * @var integer $denied
     *
     * @ORM\Column(name="denied", type="integer", nullable=false)
     */
    protected $denied = 0;

    /**
     * @var Application
     *
     * @ORM\ManyToOne(targetEntity="Application", inversedBy="userApplications")
     */
    protected $application;

    /**
     * @param Application $application
     */
    public function setApplication($application)
    {
        $this->application = $application;
    }

    /**
     * @return Application
     */
    public function getApplication()
    {
        return $this->application;
    }

    /**
     * @param \DateTime $date
     */
    public function setDate($date)
    {
        $this->date = $date;
    }

    /**
     * @return \DateTime
     */
    public function getDate()
    {
        return $this->date;
    }

    /**
     * @param int $denied
     */
    public function setDenied($denied)
    {
        $this->denied = $denied;
    }

    /**
     * @return int
     */
    public function getDenied()
    {
        return $this->denied;
    }

    /**
     * @param int $id
     */
    public function setId($id)
    {
        $this->id = $id;
    }

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

    /**
     * @param \MyName\MyBundle\Entity\User $user
     */
    public function setUser($user)
    {
        $this->user = $user;
    }

    /**
     * @return \MyName\MyBundle\Entity\User
     */
    public function getUser()
    {
        return $this->user;
    }

    /**
     * @param \MyName\MyBundle\Entity\json_array $details
     */
    public function setDetails($details)
    {
        $this->details = $details;
    }

    /**
     * @return \MyName\MyBundle\Entity\json_array
     */
    public function getDetails()
    {
        return $this->details;
    }

    public function getApplicationEntityName()
    {
        return "MyNameModuleApplicationBundle:Application";
    }

    public function __toString()
    {
        return "";
    }

}

实体应用:

<?php

namespace MyName\Module\ApplicationBundle\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
 * MyName\Module\ApplicationBundle\Entity\Application
 *
 * @ORM\Table(name="application")
 * @ORM\Entity
 */
class Application
{
    const FIELD_NAME = "NAME";
    const FIELD_TYPE = "TYPE";

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="IDENTITY")
     *
     * @var integer $id
     */
    protected $id;

    /**
     * @var Rank
     *
     * @ORM\ManyToOne(targetEntity="\MyName\MyBundle\Entity\Rank")
     * @ORM\JoinColumn(name="rank_id", referencedColumnName="id", nullable=false)
     */
    protected $rank;

    /**
     * @var Website
     *
     * @ORM\ManyToOne(targetEntity="\MyName\MyBundle\Entity\Website")
     * @ORM\JoinColumn(name="website_id", referencedColumnName="id", nullable=false)
     */
    protected $website;

    /**
     * @var string $name
     *
     * @ORM\Column(name="application_name", type="string", nullable=false)
     */
    protected $name;

    /**
     * @var string $enabled
     *
     * @ORM\Column(name="application_enabled", type="integer", nullable=false)
     */
    protected $enabled = 0;

    /**
     * @var array $fields
     *
     * @ORM\Column(name="application_fields", type="json_array", nullable=true)
     */
    protected $fields;

    /**
     *
     * @ORM\OneToMany(targetEntity="UserApplication", mappedBy="application")
     */
    protected $userApplications;

    public function __construct()
    {
        $this->date = new \DateTime("now");
        $this->userApplications = new ArrayCollection();
    }

    /**
     * @param string $enabled
     */
    public function setEnabled($enabled)
    {
        $this->enabled = $enabled;
    }

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

    /**
     * @param string $path
     */
    public function setPath($path)
    {
        $this->path = $path;
    }

    /**
     * @return string
     */
    public function getPath()
    {
        return $this->path;
    }

    /**
     * @param int $id
     */
    public function setId($id)
    {
        $this->id = $id;
    }

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

    /**
     * @param \MyName\MyBundle\Entity\Rank $rank
     */
    public function setRank($rank)
    {
        $this->rank = $rank;
    }

    /**
     * @return \MyName\MyBundle\Entity\Rank
     */
    public function getRank()
    {
        return $this->rank;
    }

    /**
     * @param \MyName\MyBundle\Entity\Website $website
     */
    public function setWebsite($website)
    {
        $this->website = $website;
    }

    /**
     * @return \MyName\MyBundle\Entity\Website
     */
    public function getWebsite()
    {
        return $this->website;
    }

    /**
     * @param string $name
     */
    public function setName($name)
    {
        $this->name = $name;
    }

    /**
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * @param array $fields
     */
    public function setFields($fields)
    {
        $this->fields = $fields;
    }

    /**
     * @return array
     */
    public function getFields()
    {
        return $this->fields;
    }

    function __toString()
    {
        return $this->name;
    }

    /**
     * @param mixed $userApplications
     */
    public function setUserApplications($userApplications)
    {
        $this->userApplications = $userApplications;
    }

    /**
     * @return mixed
     */
    public function getUserApplications()
    {
        return $this->userApplications;
    }


}

【问题讨论】:

  • 你试过在远程主机上运行app_dev吗?
  • 是的,它给了我同样的问题,我不知道为什么,但在本地主机上一切正常
  • 确切的信息是什么?您是如何进行部署的?
  • 我使用 Capifony 部署,文件位于服务器上的正确位置,我还重新启动了 httpd 服务以确保清除 apc 缓存。我添加了确切的消息作为对原始帖子的更新
  • 啊,我以为“实体”是指“某个实体”,但现在我看到这是一条实际消息。您能否使用包含#34 行的applications_user.html.twig 的sn-p 更新您的问题?

标签: php symfony doctrine twig


【解决方案1】:

我显然有与应用程序冲突的现有记录,在删除那些一切正常工作后。这就是它在开发环境中而不是在生产环境中工作的原因。

感谢大家的支持

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2021-04-02
    • 1970-01-01
    相关资源
    最近更新 更多