2013-06-23 5 views
5

मैंने अपनी परियोजना में डेटा फिक्स्चर जोड़ा है जो एक दूसरे से इकाई वस्तुओं को संदर्भित करने पर निर्भर करता है। जैसेमैं सिद्धांत फ़िक्स्चर संदर्भ से एक इकाई कैसे प्राप्त कर सकता हूं?

डेटा स्थिरता एक में, मैं जोड़ लिया है एंटिटी संदर्भ:

  // GroupEntity_Fixtures.php file 
    $this->addReference('GROUP_USER', $groupUser); 
    $this->addReference('GROUP_ADMIN', $groupAdmin); 

कहाँ $ groupAdmin और $ groupUser दोनों समूह() संस्थाओं कर रहे हैं। में मेरी दूसरी जुड़नार फाइल मैं के माध्यम से अपना उपयोगकर्ता संस्था के लिए उन संस्थाओं जोड़ना चाहते हैं:

   //UserEntity_Fixtures.php file 
      $userActive->addGroup($this->getReference('GROUP_USER')); 

$ userActive समूह इकाई के लिए कई रिश्ते के लिए कई के साथ एक उपयोगकर्ता इकाई है।

[Symfony\Component\Debug\Exception\ContextErrorException]      
    Catchable Fatal Error: Argument 1 passed to Blogger\BlogBundle\Entity\User: 
    :addGroup() must be an instance of Blogger\BlogBundle\Entity\groups, instan 
    ce of Proxies\__CG__\Blogger\BlogBundle\Entity\Group given, called in /home 
    /na/Practice/src/Blogger/BlogBundle/DataFixtures/ORM/CreateUserController_S 
    ignUpForm_UserEntity_Fixtures.php on line 27 and defined in /home/na/Practi 
    ce/src/Blogger/BlogBundle/Entity/User.php line 305 

मैं कैसे इकाई यह उम्मीद करने के लिए प्रॉक्सी से संदर्भ परिवर्तित: दुर्भाग्य से ऐसा लगता है कि मैं सिर्फ इकाई के एक प्रॉक्सी में गुजर रहा हूँ और न ही इकाई है जो निम्न त्रुटि renders लगता है?


समूह स्थिरता के लिए कोड:

<?php 
// DataFixtures/ORM/GroupEntity_Fixtrues.php 

namespace Blogger\BlogBundle\DataFixtures\ORM; 

use Doctrine\Common\DataFixtures\OrderedFixtureInterface; 
use Doctrine\Common\DataFixtures\AbstractFixture; 
use Doctrine\Common\Persistence\ObjectManager; 
use Blogger\BlogBundle\Entity\User; 
use Blogger\BlogBundle\Entity\Group; 

class GroupEntity_Fixtures extends AbstractFixture implements OrderedFixtureInterface 
{ 
    /** 
    * {@inheritDoc} 
    */ 
    public function load(ObjectManager $manager) 
    { 
     $groupUser = new Group(); 
     $groupUser->setName('GROUP_USER'); 
     $groupUser->setRole('ROLE_USER'); 
     $manager->persist($groupUser); 

     $groupAdmin = new Group(); 
     $groupAdmin->setName('GROUP_ADMIN'); 
     $groupAdmin->setRole('ROLE_USER,ROLE_ADMIN'); 
     $manager->persist($groupAdmin); 

     $manager->flush(); 

     $this->addReference('GROUP_USER', $groupUser); 
     $this->addReference('GROUP_ADMIN', $groupAdmin); 
    } 

    public function getOrder() 
    { 
     return 1; 
    } 
} 

<?php 
// DataFixtures/ORM/CreateUserController_SignUpForm_UserEntity_Fixtrues.php 

namespace Blogger\BlogBundle\DataFixtures\ORM; 

use Doctrine\Common\DataFixtures\OrderedFixtureInterface; 
use Doctrine\Common\DataFixtures\AbstractFixture; 
use Doctrine\Common\Persistence\ObjectManager; 
use Blogger\BlogBundle\Entity\User; 
use Blogger\BlogBundle\Entity\Group; 

class CreateUserController_SignUpForm_UserEntity_Fixtures extends AbstractFixture implements OrderedFixtureInterface 
{ 
    /** 
    * {@inheritDoc} 
    */ 
    public function load(ObjectManager $manager) 
    { 
     $groupUser2 = new Group(); 
     $groupUser2->setName('GROUP_USER'); 
     $groupUser2->setRole('ROLE_USER'); 
     $manager->persist($groupUser2); 

     // This person represents an active (email verified) user. 
     $userActive = new User(); 
     $userActive->setPassword("passwordActive"); 
     $userActive->setEmail("[email protected]"); 
     $userActive->setUserName("testActive"); 
     $userActive->setPassword(crypt($userActive->getPassword(),$userActive->getSalt())); 
     $userActive->setEmailToken(md5(uniqid(rand(), true))); 
     $userActive->addGroup($groupUser2); 
     //$userActive->getGroups()->add($groupRepository->getGroupByName("BASIC_USER")); 

     // This person represents an unactive (email not verified) user. 
     $userUnactive = new User(); 
     $userUnactive->setPassword("passwordUnactive"); 
     $userUnactive->setEmail("[email protected]"); 
     $userUnactive->setUserName("testUnactive"); 
     $userUnactive->setPassword(crypt($userUnactive->getPassword(),$userUnactive->getSalt())); 
     $userUnactive->setEmailToken(md5(uniqid(rand(), true))); 

     // Persist objects into the database 
     $manager->persist($userActive); 
     $manager->persist($userUnactive); 
     $manager->flush(); 

    } 

    public function getOrder() 
    { 
     return 2; 
    } 
} 

समूह के लिए कोड इकाई उपयोगकर्ता स्थिरता के लिए कोड:

/** 
* @ORM\ManyToMany(targetEntity="User", inversedBy="groups") 
*/ 
private $users; 

उपयोगकर्ता इकाई के लिए कोड:

/** 
* @ORM\ManyToMany(targetEntity="Group", mappedBy="users") 
*/ 
protected $groups; 

जोड़ा समूह methos:

/** 
* Add groups 
* 
* @param \Blogger\BlogBundle\Entity\groups $groups 
* @return User 
*/ 
public function addGroup(\Blogger\BlogBundle\Entity\groups $groups) 
{ 
    $this->groups[] = $groups; 

    return $this; 
} 
+0

" ब्लॉगर \ BlogBundle \ Entity \ grou पीएस "जो अजीब लग रहा है, क्या आपके एड ग्रुप विधि में टाइप संकेत सही है? – wgcrouch

+0

एक और, क्या आप addGroup() विधि के लिए कोड पोस्ट कर सकते हैं? ऐसा लगता है कि आपके पास टाइपो हो सकता है – wgcrouch

+0

किस प्रकार का संकेत है? उस के लिए एनोटेशन होगा: /** * @ORM \ ManyToMany (targetEntity = "उपयोगकर्ता", inversedBy = "समूह") */ –

उत्तर

3

addGroup विधि गलत प्रकार संकेत है:

यह होना चाहिए:

/** 
* Add groups 
* 
* @param \Blogger\BlogBundle\Entity\Group $groups 
* @return User 
*/ 
public function addGroup(\Blogger\BlogBundle\Entity\Group $groups) 
{ 
    $this->groups[] = $groups; 

    return $this; 
} 

नोटिस "\ ब्लॉगर \ BlogBundle \ इकाई \ \ "ब्लॉगर \ ब्लॉगबंडल \ Entity \ group" के बजाय समूह "

+0

बहुत बहुत धन्यवाद। मुझे नहीं पता कि सिद्धांत ने उस विधि को गलत बनाया है। –

+0

ये, आपको थै में देखना होगा टी, क्योंकि अन्य विधियां गलत हो सकती हैं। मुझे यकीन नहीं है कि इस मामले में यह गलत क्यों हुआ। एक अलग सवाल के लायक हो सकता है – wgcrouch

संबंधित मुद्दे

 संबंधित मुद्दे