如何解决无法在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 举报,一经查实,本站将立刻删除。