私はsymfony 2プロジェクトでDoctrine 2の提案をClass Table Inheritanceに与えるつもりです。 のは、ピザクラス、Buritoクラスとすべてが食品クラスから継承MacAndCheeseクラスがあるとしましょう。 教義を実行している場合Doctrine 2 - クラステーブルの継承を使用する際のアクセスレベルの問題
<?php
namespace Kitchen;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="food_pizza")
*/
class Pizza extends Food {
:
<?php
namespace Kitchen;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="food")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="dish", type="string")
* @ORM\DiscriminatorMap({"pizza" = "Pizza", "burito" = "Burito", "mac" => "MacAndCheese"})
*/
class Food {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
と継承されたクラスは、これらの設定(例えばピザ)を持っている:
食品クラスには、次の設定があります。スキーマ:アップデート - symfony 2アプリケーション/コンソールからのの更新彼はそれが保護または弱いしなければならない旨、食品(例えばピザ)の子どもたちにます$ idのレベルにアクセスします。私はそれが食品から継承されます侮れので、私は、どこにでもピザでます$ idを宣言していません。
$ idと宣言しようとしましたが、それはエラーです。原因は$ idを再宣言できないためです。 私は食品ピザから$ IDへの参照のいくつかの種類が必要に理解が、教義2ドキュメントは本当に私にこれがどのように見えるかについて明確な答えを与えていません。
あなたは私が何を意味しているのかを理解して助けてくれることを願っています。心に留めておくべき
あなたのIDEはあなたのフィールドのアクセスレベルを変更するものだと言っていますか?それは一種の恐ろしいことです。どんなIDEを使っているのですか?私はそれに気づいていますか? – cantera
@ cantera25これはIDEではなく、Symfony 2のdoctrine:generate:entitiesコマンドを使っていました。 –
ありがとうございます。それは多くの時間を節約しました。 –