繁体   English   中英

固定多对一的symfony

[英]Fixtures many to one symfony

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

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

班级领地

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

类用户

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

领土装置

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();
}

用户装置

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. 将此“领土”对象提供给 UserFixtures

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

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

//public $territories = [];

应该

$territory = [];

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

应该

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

根据您的其余代码。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM