我有抽象实体(App-base core):
namespace App\Bundles\AppBundle\Entity;
abstract class App extends ContainerAware implements AppInterface
{
// .....
}
和自我实体:
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;
}
我无法为App#apple_id
创建关系AppHistory#app当我将实体设置为抽象类App时,则doctrine创建一个新表“App” 当我将MappedSuperClass设置为抽象类App时,我有错误:http://docs.doctrine-project.org/en/latest/reference/inheritance-mapping.html#mapped-superclasses
如何创建从AppHistory到抽象核心App的关系?
答案 0 :(得分:0)
我的理解是,这是不可能的。我认为你的做法是错误的,至少对于Doctrine2来说。
首先,您从Doctrine2文档中提到:
映射的超类是一个抽象或具体的类,它为其子类提供持久的实体状态和映射信息,但它本身并不是一个实体。
您无法与不是实体的事物建立关系!
要解决您的直接问题(〜版本控制〜在学说中),请查看EntityAudit on Github。