固定多对一的symfony

问题描述

尽管我做了所有研究,但我无法通过多对一关系实现我的固定

我想将我的灯具分开,因为我在很多情况下都需要它们。这是好的做法吗?

班级领土

Entity Territory
{
    private $id;
    private $department; 
}

班级用户

Entity User
{
    private $id;
    private $name; 
    
    @ORM\ManyToOne(targetEntity="App\Entity\Territory")
    private $territory_id
}

TerritoryFixtures

class TerritoryFixtures extends Fixture
{

    public const TERRITORIES = 'territories';
    //public $territories = [];

        $datas = [
            [1,'AAA'],[5,'BBB'],[8,'CCC'],];


        foreach ($datas as $k => $data) {
            $territory[$k] = new Territory();
            $territory[$k]->setId($datas[$k][0]) // i need
                ->setDepartment($datas[$k][1]);

            $manager->persist($territoire[$k]);

            $this->addReference(self::TERRITORIES,$territory[$k]);  // only the last datas
            // $this->addReference($this->territories,$territory[$k]);
        }
        $manager->flush();
}

UserFixtures

class UserFixtures extends Fixture implements DependentFixtureInterface
{
    public function getDependencies()
    {
        return [
            TerritoryFixtures::class
        ];
    }

    public function load(ObjectManager $manager)
    {
        $territories = $this->getReference(TerritoryFixtures::TERRITORIES);
        // **step 1: how to recover all my territories**

        $faker = Factory::create();

        for ($a = 0; $a < 10; $a++) {

            $user = new User();

            // **step 2 : how to insert a territory entity randomly**
            $user->setDepartement($faker->randomElement($territories))
                ->setName($faker->lastName());

}

总结:

  1. 生成地域对象

  2. 将此“Territory”对象提供给 UserFixtures

  3. 用户随机插入一个领土

有可能吗?尽管我做了很多尝试,我还是阻止了

解决方法

//public $territories = [];

应该

$territory = [];

$manager->persist($territoire[$k]);

应该

$manager->persist($territory[$k]);

根据您的其余代码。

如果这不能解决您的问题,您必须告诉我们您遇到了什么错误以及您试图解决的问题。