Data Fictures - Integrity constraint violation

New topics about Symfony 2 should go here

Moderators: dcobalt, tiagojsag

Data Fictures - Integrity constraint violation

Postby ayti » Tue Jun 26, 2012 1:19 pm

Hi I stucked again,

I'm getting following error after executing following command: php app/console doctrine:fixtures:load
and have no idea where the mistake is:

Code: Select all
[PDOException]                                                                         
  SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'user_id' cannot be null


Code: Select all
class Users
{
    /**
     * @ORM\Id
     * @ORM\Column(name="user_id", type="string", length="16")
     */
    protected $user_id;

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

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

    /**
     * @ORM\Column(type="boolean")
     */
    protected $active;

    /**
     * @ORM\Column(type="datetime")
     */
    protected $create_date;


    /**
     * @ORM\OneToMany(targetEntity="Requests", mappedBy="Users")
     */
    protected $requests;

    /**
     * @ORM\OneToMany(targetEntity="Pictures", mappedBy="Users")
     */
    protected $pictures;

    /**
     * @ORM\OneToMany(targetEntity="RequestsPictures", mappedBy="Users")
     */
    protected $requests_pictures;
   
   
    /**
     * @ORM\OneToOne(targetEntity="UsersInformation", mappedBy="users")
     * @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
     */
    protected $usersInformation;


    public function __construct()
    {
        $this->requests = new ArrayCollection();
    }



    /**
     * Set user_id
     *
     * @param string $userId
     */
    public function setUserId($userId)
    {
         $this->user_id = $userId;
    }



Code: Select all
use Doctrine\Common\Persistence\ObjectManager;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use TestBundle\Entity\Users;

class UsersFixtures extends AbstractFixture implements OrderedFixtureInterface
{
    public function load(ObjectManager $manager)
    {
        $user = new Users();
        $user->setUserId('asdasNHdsadas');
        $user->setUsername('user1@test.com');
        $user->setPassword('test');
        $user->setActive(1);
        $user->setCreateDate(new \DateTime());
        $manager->persist($user);
       
       
        $user2 = new Users();
        $user2->setUserId('asdadsaWqweda');
        $user2->setUsername('user2@test.com');
        $user2->setPassword('test');
        $user2->setActive(1);
        $user2->setCreateDate(new \DateTime());
        $manager->persist($user2);
       
        $user3 = new Users();
        $user3->setUserId('sdsdsadaBShasdda');
        $user3->setUsername('user3@test.com');
        $user3->setPassword('test');
        $user3->setActive(1);
        $user3->setCreateDate(new \DateTime());
        $manager->persist($user3);
       
        $user4 = new Users();
        $user4->setUserId('asdasdasdAdaerasdsd');
        $user4->setUsername('user4@test.com');
        $user4->setPassword('test');
        $user4->setActive(1);
        $user4->setCreateDate(new \DateTime());
        $manager->persist($user4);
      
       
        $manager->flush();
       
         $this->addReference('user-1', $user);
         $this->addReference('user-2', $user2);
         $this->addReference('user-3', $user3);
         $this->addReference('user-4', $user4);
    }
   
    public function getOrder()
    {
       return 1;
    }
}




Code: Select all
use Doctrine\Common\Persistence\ObjectManager;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use TestBundle\Entity\UsersInformation;
use TestBundle\Entity\Users;

class UsersInformationFixtures extends AbstractFixture implements OrderedFixtureInterface
{
    public function load(ObjectManager $manager)
    {
        $info = new UsersInformation();
        $info->setUserId($manager->merge($this->getReference('user-1')));
        $info->setEmail('user1@test.com');
        $info->setGender('m');
        $info->setCompany('User1 GmbH');
        $info->setFirstName('Max');
        $info->setLastName('Mustermann');
        $info->setStreet('Möhringer Str. 24');
        $info->setZip('70199');
        $info->setCity('Stuttgart');
        $info->setPhone('0711-78123921');
        $info->setFax('0711-7233121231');
        $info->setMobile('01626123213312');
        $info->setUsertypeId(0);
        $info->setValidated(1);
        $manager->persist($info);
      
        $info = new UsersInformation();
        $info->setUserId($manager->merge($this->getReference('user-2')));
        $info->setEmail('user2@test.com');
        $info->setGender('m');
        $info->setCompany('User2 GmbH');
        $info->setFirstName('Max2');
        $info->setLastName('Mustermann2');
        $info->setStreet('Möhringer Str. 24');
        $info->setZip('70199');
        $info->setCity('Stuttgart');
        $info->setPhone('0711-78123921');
        $info->setFax('0711-7233121231');
        $info->setMobile('01626123213312');
        $info->setUsertypeId(0);
        $info->setValidated(0);
        $manager->persist($info);
       
        $info = new UsersInformation();
        $info->setUserId($manager->merge($this->getReference('user-3')));
        $info->setEmail('user3@test.com');
        $info->setGender('m');
        $info->setCompany('User3 GmbH');
        $info->setFirstName('Max3');
        $info->setLastName('Mustermann3');
        $info->setStreet('Möhringer Str. 24');
        $info->setZip('70199');
        $info->setCity('Stuttgart');
        $info->setPhone('0711-78123921');
        $info->setFax('0711-7233121231');
        $info->setMobile('01626123213312');
        $info->setUsertypeId(1);
        $info->setValidated(1);
        $manager->persist($info);
      
   $info = new UsersInformation();
        $info->setUserId($manager->merge($this->getReference('user-4')));
        $info->setEmail('user4@test.com');
        $info->setGender('m');
        $info->setCompany('User4 GmbH');
        $info->setFirstName('Max4');
        $info->setLastName('Mustermann4');
        $info->setStreet('Möhringer Str. 24');
        $info->setZip('70199');
        $info->setCity('Stuttgart');
        $info->setPhone('0711-78123921');
        $info->setFax('0711-7233121231');
        $info->setMobile('01626123213312');
        $info->setUsertypeId(1);
        $info->setValidated(0);
        $manager->persist($info);
       
       
        $manager->flush(); 
     }
   
    public function getOrder()
    {
       return 2;
    }
}



Cheers
ayti
Junior Member
 
Posts: 5
Joined: Mon Jun 25, 2012 9:07 pm

Re: Data Fictures - Integrity constraint violation

Postby dreipunktnull » Tue Jun 26, 2012 1:25 pm

You either need to generate an id for your user entity manually (as it is configured right now) or set a strategy to let Doctrine generate the id automatically. Read more about this in Doctrine's documentation.
User avatar
dreipunktnull
Faithful Member
 
Posts: 1244
Joined: Fri Jun 17, 2011 10:03 am
Location: Germany

Re: Data Fictures - Integrity constraint violation

Postby ayti » Tue Jun 26, 2012 3:49 pm

Hi, thanks for your answer. I've read the documentation, but still not sure how to do it.

I'm setting the ID manually in UsersFixtures: $user->setUserId('asdasNHdsadas') or where I have to generate it?


When I'm removing following part from from the User Entity it's working. But with the relation I'm not getting it done.

Code: Select all
 /**
     * @ORM\OneToOne(targetEntity="UsersInformation", mappedBy="users")
     * @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
     */
    protected $usersInformation;
ayti
Junior Member
 
Posts: 5
Joined: Mon Jun 25, 2012 9:07 pm

Re: Data Fictures - Integrity constraint violation

Postby dreipunktnull » Tue Jun 26, 2012 5:02 pm

Oh, sorry. I didn't read properly. :oops: You don't set the ids of your relations but 'attach' the related entity directly through the setter (pseudo code):

Code: Select all
$user = new User();

$info = new UserInfo();

$info->setUser($user);

The id handling is done by doctrine.
User avatar
dreipunktnull
Faithful Member
 
Posts: 1244
Joined: Fri Jun 17, 2011 10:03 am
Location: Germany


Return to General Symfony 2 discussion

Who is online

Users browsing this forum: No registered users and 13 guests