0

私は抽象的なエンティティを持っています (アプリ - ベースコア):

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

AppHistory#app から App#apple_id へのリレーションを作成できません

エンティティを抽象クラス App に設定すると、Doctrine は新しいテーブル「App」を作成します MappedSuperClass を抽象クラス App に設定すると、エラーが発生します: http://docs.doctrine-project.org/en/latest/reference/inheritance -mapping.html#mapped-スーパークラス

AppHistory から抽象的なコア App への関係を作成するにはどうすればよいですか?

4

1 に答える 1

0

私の理解では、それは不可能です。少なくとも Doctrine2 に関しては、間違ったやり方をしていると思います。

まず、あなたが言及した Doctrine2 ドキュメントから:

マップされたスーパークラスは、永続的なエンティティの状態とそのサブクラスのマッピング情報を提供する抽象クラスまたは具象クラスですが、それ自体はエンティティではありません。

エンティティではないものとの関係を作成することはできません!

当面の問題 (ドクトリンでの ~version control~) を解決するには、代わりに Github の EntityAudit をチェックしてください。

于 2012-12-02T13:51:00.840 に答える