我在Symfony 4中使用Alice的Data Fixtures时遇到了问题。
当我运行 bin / console doctrine:fixtures:load 时,系统会询问我是否要清除数据库,最终命令终止而没有任何错误。
数据库被有效清除,但没有填充数据。
我正在使用Symfony 4.0.3,Doctrine Data Fixtures 1.3和Nelmio Alice 3.1.3。
的src / DataFixtures / ORM / fixtures.yml
App\Entity\User:
user{1..10}:
email: '<email()>'
的src / DataFixtures / ORM / LoadFixtures.php
namespace App\DataFixtures\ORM;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\Persistence\ObjectManager;
use Nelmio\Alice\Loader\NativeLoader;
class LoadFixtures extends Fixture
{
public function load(ObjectManager $manager)
{
$loader = new NativeLoader();
$objectSet = $loader->loadFile(__DIR__.'/fixtures.yml');
}
}
SRC /实体/ user.php的
namespace App\Entity;
use Symfony\Component\Security\Core\User\UserInterface;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="user")
*/
class User implements UserInterface
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", unique=true)
*/
private $email;
... and then various getters/setters methods
我怀疑问题是数据没有被ObjectManager持久化。 遗憾的是,Nelmio / Alice的文档中没有任何关于如何保持数据的信息。 https://github.com/nelmio/alice#table-of-contents
如何确保数据持续存在?
答案 0 :(得分:9)
class LoadFixtures extends Fixture
{
public function load(ObjectManager $manager)
{
$loader = new Nelmio\Alice\Loader\NativeLoader();
$objectSet = $loader->loadFile(__DIR__.'/Fixtures.yml')->getObjects();
foreach($objectSet as $object) {
$manager->persist($object);
}
$manager->flush();
}
}
自版本3以来,Alice已经发生了很多变化。