我创建了一个数据夹具类来加载一些数据。
位于src/AppBundle/DataFixtures/ORM/FixtureLoader.php
<?php
namespace AppBundle\DataFixtures\ORM;
use Doctrine\Common\DataFixtures\FixtureInterface;
use AppBundle\Entity\User;
use AppBundle\Entity\Role;
use Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder;
class FixtureLoader implements FixtureInterface
{
public function load($manager)
{
// создание роли ROLE_ADMIN
$role = new Role();
$role->setName('ROLE_ADMIN');
$manager->persist($role);
// создание пользователя
$user = new User();
$user->setFirstName('Tigran');
$user->setLastName('Muradyan');
$user->setEmail('stereoshoots@gmail.com');
$user->setUsername('stereoshoots');
$user->setSalt(md5(time()));
// шифрует и устанавливает пароль для пользователя,
// эти настройки совпадают с конфигурационными файлами
$encoder = new MessageDigestPasswordEncoder('sha512', true, 10);
$password = $encoder->encodePassword('stereoshoots', $user->getSalt());
$user->setPassword($password);
$user->getUserRoles()->add($role);
$manager->persist($user);
}
}
我正在使用下一个命令加载该夹具:
php app/console doctrine:fixtures:load
php app/console doctrine:fixtures:load --fixtures=src\AppBundle\DataFixtures\ORM --append
它不能是FixtureLoader.php
。
答案 0 :(得分:1)
首先,添加use Doctrine\Common\Persistence\ObjectManager;
并在加载方法签名中添加ObjectManager
:
public function load(ObjectManager $manager) { ... }
要完成,请冲洗您的实体:
public function load(ObjectManager $manager) {
/***/
$manager->flush();
}