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;
}