Symfony找不到数据夹具

时间:2015-10-20 17:17:46

标签: php symfony doctrine-orm

我创建了一个数据夹具类来加载一些数据。

位于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

1 个答案:

答案 0 :(得分:1)

首先,添加use Doctrine\Common\Persistence\ObjectManager;

并在加载方法签名中添加ObjectManagerpublic function load(ObjectManager $manager) { ... }

要完成,请冲洗您的实体:

public function load(ObjectManager $manager) {

     /***/

     $manager->flush();

}