2014-06-11 15 views
13

Tôi có lớp này Zgh\FEBundle\Entity\User mở rộng FOS\UserBundle\Model\User.Đặc điểm - xung đột tài sản với lớp cha

use FOS\UserBundle\Model\User as BaseUser; 

class User extends BaseUser implements ParticipantInterface 
{ 
    use BasicInfo; 
    // .. 
} 

BaseUser lớp:

abstract class User implements UserInterface, GroupableInterface 
{ 
    protected $id; 
    // .. 
} 

BaseInfo đặc điểm:

trait BasicInfo 
{ 
    /** 
    * @ORM\Column(type="string", length=255) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="NONE") 
    */ 
    protected $id; 

    // .. 
} 

Nhưng khi tôi chạy mã của tôi tôi nhận được lỗi này:

Strict standards: FOS\UserBundle\Model\User and Zgh\FEBundle\Model\Partial\BasicInfo define the same property ($id) in the composition of Zgh\FEBundle\Entity\User. This might be incompatible, consider using accessor methods in traits instead.

Tôi sử dụng Symfony fr bài tập.

Có cách nào để giải quyết xung đột này giữa đặc điểm và đối tượng lớp cha về thuộc tính này không?

+0

Và câu hỏi là .... – marekful

+0

@ MarcellFülöp Tôi đã cập nhật câu hỏi. Cảm ơn. –

Trả lời

1

Không, bạn vẫn chưa thể viết lại thuộc tính được ánh xạ bằng cách sử dụng Trait.

Ngoài ra, một giải pháp thay thế có thể là sử dụng nhiều lớp thực thể trừu tượng và mở rộng các thực thể con của bạn tùy theo nhu cầu của bạn.

ví dụ:

<?php 

use FOS\UserBundle\Model\User as BaseUser; 

abstract class AbstractStrategyNoneEntity extends BaseUser 
{ 
    /** 
    * @ORM\Column(type="string", length=255) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="NONE") 
    */ 
    protected $id; 
} 

abstract class AbstractStrategyAutoEntity extends BaseUser 
{ 
    /** 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    * 
    */ 
    protected $id; 
} 

Và mở rộng một trong số họ vào đơn vị con quý vị.

/** 
* @ORM\Entity 
*/ 
class Child extends AbstractStrategyNoneEntity 
{ 
    // Inherited mapping 
} 

Hy vọng điều này sẽ trả lời câu hỏi của bạn.

Các vấn đề liên quan