首页 > 解决方案 > Symfony 伪造者关系

问题描述

你好我来看你是因为我对faker和dataFixtures有一点问题实际上当我运行添加数据的命令时我在数据库中有一个错误因为“region_id”为空我分享我的代码

namespace App\DataFixtures;

use App\Entity\Advertisement;
use App\Entity\Category;
use App\Entity\Region;
use App\Entity\User;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\Persistence\ObjectManager;
use Faker\ORM\Doctrine\Populator;

class AppFixtures extends Fixture
{
    /**
     * @param ObjectManager $manager
     */
    public function load(ObjectManager $manager)
    {
        $generator = \Faker\Factory::create('fr_FR');

        $populator = new Populator($generator, $manager);
        $populator->addEntity(Advertisement::class, 200, [
            'address' => function() use ($generator) { return $generator->address; },
            'description' => $generator->text(2000),
            'price' => mt_getrandmax(),
            'imageName' => function() use ($generator) { return 'https://picsum.photos/1000/700'; },
            'imageName2' => function() use ($generator) { return 'https://picsum.photos/1000/700'; },
            'imageName3' => function() use ($generator) { return 'https://picsum.photos/1000/700'; },
            'imageName4' => function() use ($generator) { return 'https://picsum.photos/1000/700'; },
        ]);
        $populator->addEntity(User::class, 10);
        $populator->addEntity(Category::class, 5);
        $populator->execute();
        $manager->flush();
    }
}

和我的实体广告关系

/**
     * @ORM\ManyToOne(targetEntity="App\Entity\Region", inversedBy="advertisement")
     * @ORM\JoinColumn(nullable=false)
     */
    private $region;

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Category", inversedBy="advertisement")
     * @ORM\JoinColumn(nullable=false)
     */
    private $category;

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="advertisement")
     * @ORM\JoinColumn(nullable=false)
     */
    private $user;

    /**
     * @ORM\Column(type="datetime")
     */
    private $CreatedAt;

    public function __construct()
    {
        $this->CreatedAt = new \DateTime('now', new \DateTimeZone('Europe/Paris'));
        $this->isValid = 0;
    }

我的问题是在数据库中告诉我 null 中的关系我不明白为什么,如果您有解决方案或想法我是接受者谢谢您的帮助

标签: phpdatabasesymfonyfaker

解决方案


推荐阅读