无法在Fixture脚本中获取现有数据

问题描述

我正在用symfony 5运行我的应用程序。

我无法在Fixture脚本中获取任何现有数据,但无法弄清楚原因...方法 get_all_ids 应该返回我实体的所有可用ID ,但是我总是有一个空数组(但是该方法正在控制器上工作)

这是我的方法(RestaurantRepository.PHP):

public function get_all_ids() {
        $all = $this->findAll();
        return array_map( function(Restaurant $e) {
            return $e->getId();
        },$all);
    }

这是我的固定装置

<?PHP

namespace App\DataFixtures;

use App\Entity\Rate;
use App\Entity\Restaurant;
use App\Entity\User;
use App\Repository\RestaurantRepository;
use App\Repository\UserRepository;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\Persistence\ObjectManager;
use Faker;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

class RateFixtures extends Fixture implements FixtureGroupInterface,ContainerAwareInterface
{
    private $container;

    private $userRepository;
    public function __construct(UserRepository $userRepository)
    {
        $this->userRepository = $userRepository;
    }

    public function load(ObjectManager $manager)
    {

        /** @var UserRepository $user_repository */
        $user_repository = $manager->getRepository(User::class);
        $id_users = $this->userRepository->get_all_ids();
        dd($id_users);

        /** @var RestaurantRepository $restaurant_repository */
        $restaurant_repository = $manager->getRepository(Restaurant::class);
        $id_restaurants = $restaurant_repository->get_all_ids();
        dd($user_repository);

        $faker = Faker\Factory::create('fr_FR');

        for ($u = 0; $u < 10; $u++) {
            $rate = new Rate();
            $rate->setValue($faker->numberBetween(0,10));
            $rate->setIdUser(array_rand($id_users));
            $rate->setIdRestaurant(array_rand($id_restaurants));
            $manager->persist($rate);
        }

        $manager->flush();
    }

    public function setContainer(ContainerInterface $container = null)
    {
        $this->container = $container;
    }

    public static function getGroups(): array
     {
         return ['rates'];
     }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)