2011-11-10 9 views
8

मैं अपने उपयोगकर्ताओं के प्रबंधन के लिए FOS_UserBundle उपयोग करने के लिए कोशिश कर रहा हूँ, लेकिन हर मैं dbSymfony2: FOS_Userbundle डीबी स्कीमा को अद्यतन करते समय डुप्लिकेट परिभाषा?

php app/console doctrine:schema:update --force 

मैं त्रुटि निम्न मिल अद्यतन करने के लिए प्रयास करें:

डुप्लिकेट एक क्षेत्र में इकाई पर स्तंभ 'उपयोगकर्ता नाम' की परिभाषा या भेदभाव कॉलम मैपिंग। उपयोगकर्ता उपयोगकर्ता बंडल

जब मैं उपयोगकर्ता नाम पर टिप्पणी करता हूं तो यह 'ईमेल' के साथ भी होता है।

मेरे उपयोगकर्ता वर्ग वास्तव में बहुत ही बुनियादी है:

namespace My\MyBundle\Entity; 

use FOS\UserBundle\Entity\User as BaseUser; 
use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="fos_user") 
*/ 
class User extends BaseUser 
{ 

/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @ORM\Column(type="string", length="100") 
*/ 
protected $username; 

/** 
* @ORM\Column(type="string", length="100") 
*/ 
protected $name; 

/** 
* @ORM\Column(type="string", length="100") 
*/ 
protected $firstname; 

/** 
* @ORM\Column(type="string", length="150") 
*/ 
protected $email; 

} 

Am मैं कुछ याद आ रही?

उत्तर

13

आपका My\MyBundle\Entity\UserFOS\UserBundle\Entity\User बढ़ाता है, जो बदले में FOS\UserBundle\Model\User फैलाता है, जिसमें पहले से ही $username फ़ील्ड है। इसमें $email फ़ील्ड भी है। तो आपको बस अपनी कक्षा से $username और $email फ़ील्ड को निकालने की आवश्यकता है।

+0

ग्रेट धन्यवाद igorw! .. कुछ चीजें बस शुरुआती लोगों के लिए गहराई से नहीं बताती हैं .. धन्यवाद! – Mike

+9

लेकिन यदि आपको अपने स्वयं के सत्यापन समूहों के साथ उन क्षेत्रों में अपने दावे जोड़ने की आवश्यकता है, तो यदि आप अपने उपयोगकर्ता वर्ग में गुण नहीं रखते हैं तो आप इसे कैसे कर सकते हैं? – flu

+3

मुझे यह त्रुटि मिल रही है, यहां तक ​​कि मैं ईमेल या उपयोगकर्ता नाम फ़ील्ड हटा देता हूं। मुझे पता है कि यह सवाल पुराना है ... –

10

FOS \ UserBundle \ Model \ User के साथ विस्तार करें, FOS \ UserBundle \ Entity \ User class नहीं। आपको हमेशा मॉडल के साथ विस्तार करना चाहिए, न कि इकाई।

+0

यह चाल है लेकिन मुझे इकाई का विस्तार क्यों नहीं करना चाहिए? – flu

+2

क्योंकि इकाई पहले से ही "शामिल" एनोटेशन है। मॉडल को विस्तारित करके आप पहले से मौजूद –

+1

फ़ील्ड पर अपनी खुद की टिप्पणियां कर सकते हैं इस मामले में सावधान रहें कि आपको सभी एनोटेशन को फिर से परिभाषित करने की आवश्यकता है (कोई भी 'FOS \ UserBundle \ Entity \ User' से विरासत में नहीं लिया जाएगा) –

2

मेरे लिए, यह द्वारा कॉल किया गया कॉलम एनोटेशन को हटा रहा है।

/** 
* @ORM\Column --> remove this line! 
*/ 
protected $password; 

आप BaseUser से एनोटेशन ओवरराइड करने के लिए उपयोगकर्ता या BaseUser वर्ग के लिए @ORM \ AttributeOverrides उपयोग कर सकते हैं। उदाहरण:

/** 
* @ORM\Entity 
* @ORM\Table(name="fos_user") 
* @AttributeOverrides({ 
*  @AttributeOverride(name="password", 
*   [email protected](
*    nullable = false, 
*    unique = true, 
*    length = 123 
*   ) 
*  ) 
* }) 
class User extends BaseUser 
{ 
... 
संबंधित मुद्दे