我試圖在我的Symfony 2項目中實現Class Table Inheritance Doctrine 2 offer。 比方說,一個有比薩類,Burito類和MacAndCheese類,所有從食品類繼承。Doctrine 2 - 使用Class Table繼承時的訪問級別問題
的食品類具有以下設置:
<?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;
而且繼承類的這些設置(比薩爲例):
<?php
namespace Kitchen;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="food_pizza")
*/
class Pizza extends Food {
當運行學說: schema:update - 從Symfony 2應用程序/控制檯執行我得到一個關於t的錯誤他訪問的$ ID水平食品(比薩爲例)的兒童,說明它必須受到保護或弱。我還沒有宣佈$ ID在比薩任何地方,因爲我估計它會從食品繼承。
所以我試圖宣佈$ id,但是這給了我一個錯誤,因爲我無法重新聲明$ id。 我想我需要某種參考的$ id從食品在比薩,但原則2文檔沒有真正給我什麼,這將看起來像一個明確的答案。
希望你明白我的意思,並可以幫助我。
你是說你的IDE是改變你的字段訪問級別的嗎?這有點嚇人。你使用什麼IDE,以便我可以留意這種情況? – cantera
@ cantera25它不是IDE,它是Symfony 2學說:generate:entities命令。 –
謝謝。它節省了我很多時間。 –