Tôi đang cố gắng đưa ra các đề xuất Class Table Inheritance Doctrine 2 trong dự án Symfony 2 của tôi. Hãy nói rằng một có một Pizza lớp, Burito lớp và một MacAndCheese lớp đó tất cả các kế thừa từ một Thực phẩm lớp.Học thuyết 2 - Các vấn đề về mức truy cập khi sử dụng Thừa kế bảng lớp
Các Thực phẩm lớp có các cài đặt sau:
<?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;
Và các lớp kế thừa có các cài đặt (Pizza ví dụ):
<?php
namespace Kitchen;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="food_pizza")
*/
class Pizza extends Food {
Khi chạy doctrine: schema: update --force từ ứng dụng/giao diện điều khiển Symfony 2 Tôi gặp lỗi về t ông tiếp cận mức độ $ id trong con cái Thực phẩm (Pizza ví dụ), trong đó nêu nó phải được bảo vệ hoặc yếu. Tôi chưa khai báo $ id ở bất kỳ đâu trong số Pizza, vì tôi cho rằng nó sẽ được kế thừa từ Thực phẩm.
Vì vậy, tôi đã cố gắng khai báo $ id, nhưng điều đó mang lại cho tôi một lỗi, vì tôi không thể redeclare $ id. Tôi cho rằng tôi cần một số tham chiếu đến $ id từ Thực phẩm trong Pizza, nhưng tài liệu Doctrine 2 không thực sự cho tôi câu trả lời rõ ràng về điều này.
Hy vọng bạn hiểu ý tôi và có thể giúp tôi.
Bạn đang nói IDE của bạn là một trong những thay đổi mức truy cập trên các lĩnh vực của bạn? Đó là loại đáng sợ. Bạn sử dụng IDE nào để tôi có thể theo dõi điều đó xảy ra? – cantera
@ cantera25 Nó không phải là IDE, đó là lệnh của symfony 2: generate: entity đã làm điều đó. –
Cảm ơn. Nó tiết kiệm rất nhiều thời gian của tôi. –