【问题标题】:How to set multiple names on one setName function?如何在一个 setName 函数上设置多个名称?
【发布时间】:2022-08-22 21:27:23
【问题描述】:

我最近才开始编程,我为我的实体(AdvertisementCategory($id, $name)User)提供了理论夹具和铸造厂。

由于我无法弄清楚如何从代工厂中为某个类别获取我想要的名称,因此我尝试使用下面的代码在夹具中自己编写它(完全忽略 categoryFactory)。 但是我只得到了我写的数组的最后一项(cpu)。 (只有 cpu 类别的广告,没有其他类别保存在数据库中)

基本上,我的想法是创建类别并为每个类别创建一个Advertisement

class AppFixtures extends Fixture
{

    public function load(ObjectManager $manager): void
    {
        $category = new Category();
        $names = array(
             \'pc\',
            \'laptop\',
             \'cpu\');
        foreach ($names as $name)
        {
            $nam = $category->setName($name);
            $manager->persist($nam);

            UserFactory::createMany(3);
            AdvertisementFactory::createMany(20,[
                \'user\'=> UserFactory::random(),
                \'category\'=>$nam
            ]);
        }
        $manager->flush();
    }

}
  • 你为什么把名字写到相同的$category 实体多次?

标签: php symfony doctrine-orm symfony5


【解决方案1】:

尝试这个:

public function load(ObjectManager $manager): void
{ 
    $names = array(
         'pc',
         'laptop',
         'cpu'
    );
    
   foreach ($names as $name)
   {
       $category = new Category();
       $category->setName($name); 
       
       $manager->persist($category);        
   }
   
   $manager->flush();
}

【讨论】:

  • 在您的帮助下解决了
  • 我为你感到高兴,@Tsolmonx !
  • 请在您的答案中添加一些解释,以便其他人可以从中学习 - 您更改了什么,为什么?
【解决方案2】:

我终于解决了。 @Anton M

    public function load(ObjectManager $manager): void
    {
    $names = array('pc', 'laptop', 'display','processor', 'cpu', 'gpu', 'ram', 'motherboard');

    foreach ($names as $name)
    {
        $category = new Category();
        $category->setName($name);
        $manager->persist($category);

        $advertisement = new Advertisement();
        UserFactory::createMany(10);
        AdvertisementFactory::createMany(20, function () use ($advertisement, $category) {
        return [
            'user' => UserFactory::random(),
            'category' => $category->addAdvertisement($advertisement)
        ];
        });

    }

    $manager->flush();

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-29
    • 2021-08-06
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 2021-12-12
    相关资源
    最近更新 更多