Hello everyone!

We have been investing plenty of personal time and energy for many years to share our knowledge with you all. However, we now need your help to keep this blog running. All you have to do is just click one of the adverts on the site, otherwise it will sadly be taken down due to hosting etc. costs. Thank you.

When @ORM\GeneratedValue(strategy="AUTO") is set for $id field in an entity, Doctrine data fixtures automatically populates IDs however we can temporarily disable this feature and set our own ID numbers like shown below.


Entity


use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
* @ORM\Entity
* @ORM\Table(name="user")
* @UniqueEntity(fields="username", message="Username is already in use.")
*/
class User
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

/**
* @ORM\Column(name="username", type="string", length=20, unique=true)
*/
protected $username;

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

Fixtures


use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Application\BackendBundle\Entity\User;

class UserFixtures extends AbstractFixture implements OrderedFixtureInterface
{
public function load(ObjectManager $manager)
{
foreach ($this->getData() as $data) {
$user = $this->getUser($data);

$manager->persist($user);

// Enforce specified record ID
$metadata = $manager->getClassMetaData(get_class($user));
$metadata->setIdGeneratorType(\Doctrine\ORM\Mapping\ClassMetadata::GENERATOR_TYPE_NONE);
}

$manager->flush();
}

private function getUser(array $data)
{
return
(new User())
->setId($data['id'])
->setUsername($data['username'])
->setPassword($data['password']);
}

private function getData()
{
return
[
[
'id' => '11',
'username' => 'inanzzz',
'password' => '09cd68a2a77b22a312dded612dd0d9988685189f',
],
[
'id' => '22',
'username' => 'robertdeniro',
'password' => '09cd68a2a77b22a312dded612dd0d9988685189f',
],
[
'id' => '33',
'username' => 'alpacino',
'password' => '09cd68a2a77b22a312dded612dd0d9988685189f',
],
];
}

public function getOrder()
{
return 1;
}
}