Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 第二条原则中如何设置固定实体关系_Php_Symfony_Doctrine Orm - Fatal编程技术网

Php 第二条原则中如何设置固定实体关系

Php 第二条原则中如何设置固定实体关系,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有抽象实体(应用程序基础核心): 和自我实体: namespace AppRus\Bundles\AppBundle\Entity; use Doctrine\ORM\Mapping as ORM, App\Bundles\AppBundle\Entity\App as BaseApp; /** * App * * @ORM\Table(name="apps") * @ORM\Entity(repositoryClass="AppRus\Bundles\AppBundle\

我有抽象实体(应用程序基础核心):

和自我实体:

namespace AppRus\Bundles\AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM,
    App\Bundles\AppBundle\Entity\App as BaseApp;

/**
 * App
 *
 * @ORM\Table(name="apps")
 * @ORM\Entity(repositoryClass="AppRus\Bundles\AppBundle\Entity\AppRepository")
 */
class App extends BaseApp
{
  // ....
}
以及控制修订的实体:

namespace App\Bundles\AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * AppHistory
 *
 * @ORM\Table(name="apps_history")
 * @ORM\Entity(repositoryClass="App\Bundles\AppBundle\Entity\AppHistoryRepository")
 */
class AppHistory
{
    /**
     * @var integer
     *
     * @ORM\ManyToOne(targetEntity="App\Bundles\AppBundle\Entity\App")
     * @ORM\JoinColumn(name="app_apple_id", referencedColumnName="apple_id")
     */
    private $app;
}
我无法创建AppHistory#应用程序到应用程序#apple#id的关系

当我将实体设置为抽象类App时,创建一个新表“App” 当我将MappedSuperClass设置为抽象类App时,出现错误:


如何创建从AppHistory到抽象核心应用的关系?

我的理解是这是不可能的。我认为你做事情的方式不对,至少对医生来说是这样

首先,从您提到的Doctrine2文档中:

映射超类是一个抽象或具体的类,它为其子类提供持久的实体状态和映射信息,但它本身不是实体

您不能创建与非实体的对象的关系


若要解决您眼前的问题(~version control~,在条令中),请改为签出。

可以尝试替换条令事件侦听器(loadClassMetadata)中的目标实体,但在文档中-属性$associationMappings是公共且只读的这是良好的实体审核,但我想更新创建我的逻辑生成历史记录。在关联中编辑targetEntity(loadClassMetadata)是可行的。@ZhukV,我不明白你想做什么。你能编辑你的问题来解释更多吗?可能链接到您试图实现的设计模式。我有一个抽象核心,用于将应用程序保存在数据库中。接下来,每个核心都从抽象核心扩展,并为控制抽象核心添加配置文件。我希望所有core都以抽象core编写,并且仅从配置文件配置下一个core。若要回答原始问题中的问题(“如何创建从AppHistory到core App的关系?”),您不能。关系必须是从一个实体到另一个实体的关系。每个实体仍然可以扩展一个抽象类
namespace App\Bundles\AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * AppHistory
 *
 * @ORM\Table(name="apps_history")
 * @ORM\Entity(repositoryClass="App\Bundles\AppBundle\Entity\AppHistoryRepository")
 */
class AppHistory
{
    /**
     * @var integer
     *
     * @ORM\ManyToOne(targetEntity="App\Bundles\AppBundle\Entity\App")
     * @ORM\JoinColumn(name="app_apple_id", referencedColumnName="apple_id")
     */
    private $app;
}