Doctrine светильники ManyToOne - Faker не загружается - PullRequest
0 голосов
/ 25 февраля 2020

Я пытался использовать фейкер для загрузки некоторых приборов в мою базу данных, и когда я делаю php bin/console doctrine:fixtures:load по какой-то причине, которую я не знаю. Загрузка не работает, и у меня нет ошибки, чтобы объяснить мне, почему она не заполняется. Если кто-то может помочь мне просто понять проблему, это будет здорово.

Ниже вы можете увидеть мой код, это datafixture для 2 сущностей с отношением многие к одному (позиция трекера).

<?php

namespace App\DataFixtures;
use App\Entity\Positions;
use App\Entity\Tracker;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\FixtureInterface;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Persistence\ObjectManager;
use Faker;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;


class PositionsFixtures extends AbstractFixture implements ContainerAwareInterface ,FixtureInterface,OrderedFixtureInterface
{
    private $container;
    public function setContainer(ContainerInterface $container = null)
    {
        $this->container = $container;
    }

    public function load(ObjectManager $manager)
    {

        $faker = Faker\Factory::create('fr_FR');
        $positions =[];
        for($i=0;$i < 5;$i++){
            $positions[$i] = new Positions();
            $positions[$i]->setTracker($faker->name);
            $positions[$i]->setCreationDate($faker->dateTime);
            $positions[$i]->setPositionDate($faker->dateTime);
            $positions[$i]->setState($faker->state);
            $positions[$i]->setLatitude($faker->latitude);
            $positions[$i]->setLongitude($faker->longitude);
            $positions[$i]->setSpeed($faker->numberBetween(0,400));
            $positions[$i]->setHeading($faker->numberBetween(0,360));
            $positions[$i]->setAddress($faker->address);
            $positions[$i]->setRawDate($faker->text);

            $manager->persist($positions[$i]);

        }

        $trackers =[];
        for($k=0;$k < 5;$k++){
            $trackers[$k] = new Tracker();
            $trackers[$k]->setName($faker->name);
            $trackers[$k]->setTrackerId($faker->uuid);
            $trackers[$k]->setEquipmentType($faker->realText());
            $trackers[$k]->setPlate($faker->randomLetter);
            $trackers[$k]->setDescription($faker->text);
            $trackers[$k]->setPhoneNumber($faker->phoneNumber);
            $trackers[$k]->setLastState($faker->state);
            $trackers[$k]->setLastConnectionDate($faker->dateTime);
            $trackers[$k]->setLastIp($faker->ipv4);
            $trackers[$k]->setLastPort($faker->numberBetween(100,80000));
            $trackers[$k]->setLastBatteryLevel($faker->numberBetween(0,100));
            $trackers[$k]->setLastLatitude($faker->latitude);
            $trackers[$k]->setLastLongitude($faker->longitude);
            $trackers[$k]->setLastHeading($faker->numberBetween(0,360));
            $trackers[$k]->setImage($faker->imageUrl());
            $trackers[$k]->setEnabled($faker->boolean);
            $randomPositions =(array) array_rand($positions,rand(1,count($positions)));
            foreach($randomPositions as $key => $value){

                $trackers[$k]->addPosition($positions[$key]);
            }
            $manager->persist($positions[$i]);

        }
        $manager->flush();
    }
   public function getOrder()
    {
        return 1;
    }
}

1 Ответ

0 голосов
/ 26 февраля 2020

С помощью этой ссылки: https://symfonycasts.com/screencast/symfony-doctrine/faker-fixtures

Я думаю, что вам нужно просмотреть свой код в DataFixtures, или вы можете использовать непосредственно приборы из Doctrine: https://symfony.com/doc/master/bundles/DoctrineFixturesBundle/index.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...