2014-06-11 20 views
13

Ho questa classe Zgh\FEBundle\Entity\User che si estende FOS\UserBundle\Model\User.Tratti - conflitto di proprietà con la classe genitore

use FOS\UserBundle\Model\User as BaseUser; 

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

E BaseUser classe:

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

E BaseInfo tratto:

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

    // .. 
} 

Ma quando eseguo il mio codice ottengo questo errore:

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.

Sono usando Symfony fr amework.

Esiste comunque una soluzione per risolvere questo conflitto tra il tratto e l'oggetto della classe padre su questa proprietà?

+0

E la domanda è ... – marekful

+0

@ MarcellFülöp Ho aggiornato la domanda. Grazie. –

risposta

1

No, non è ancora possibile riscrivere una proprietà associata utilizzando un tratto.

Inoltre, una possibile alternativa consiste nell'utilizzare più classi di entità astratta ed estendere le entità figlio in base alle proprie esigenze.

cioè

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

ed estendere uno di loro nella vostra entità figlio.

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

Si spera che questo risponda alla tua domanda.