Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]faker w symfony
Forum PHP.pl > Forum > Przedszkole
codeszan
Wzorując się na tutorialu z internetu, chciałem nauczyć się podstaw symfony. Prawdopodobnie poniższy kod powinien mi wygenerować
losowe wpisy po wpisaniu polecenia php bin/console doctrine:fixtures:load w konsoli. To się niestety nie dzieje.

Pytanie: dlaczego w:
  1. $post->setTitle($faker->sentence(3));

nie mam dostepu do klasy z $faker.

W kodzie:
  1. $faker = Faker\Factory::create();

pokazywało mi czerwony wykrzyknik i podkreslenie Faker, przez przypadek jakoś to wyłączylem.
Teraz tylko po najechaniu pisze:
Undefined class Factory

W jaki sposob dobrać się do klasy Faker?
  1. <?php
  2.  
  3.  
  4. namespace AppBundle\DataFixtures\ORM;
  5.  
  6. use Doctrine\Common\DataFixtures\FixtureInterface;
  7. use Doctrine\Common\Persistence\ObjectManager;
  8.  
  9. class LoadPostData implements FixtureInterface
  10. {
  11. /**
  12.   * @param ObjectManager $manager
  13.   */
  14. public function load(ObjectManager $manager)
  15. {
  16.  
  17. $faker = Faker\Factory::create();
  18.  
  19.  
  20. for ($i = 1; $i <= 1000; $i++) {
  21.  
  22. $post = new \AppBundle\Entity\Post();
  23. $post->setTitle($faker->sentence(3));
  24. $post->setLead($faker->text(300));
  25. $post->setContent($faker->text(700));
  26. $post->setCreatedAt($faker->dateTimeThisMonth);
  27.  
  28. $manager->presist($post);
  29. }
  30.  
  31. $manager->flush();
  32. }
  33. }
viking
Ustawiasz namespace stąd szukany plik to AppBundle\DataFixtures\ORM\Faker\Factory
codeszan
  1. namespace AppBundle\DataFixtures\ORM;
  2. namespace AppBundle\DataFixtures\ORM\Faker\Factory;


mam ustawic dwa namespace?

Nie wiem czy zostalem dobbrze zrozumainy ale prolem jest taki, że jak zrobie
$faker->
nie mam dostepu do metod klasy Faker

troszkę podobnie jak tu (4:30)
https://www.youtube.com/watch?v=pocWIEqAct0&t=1s

tylko jemu po dodaniu lini problem się rozwiązał.
  1. $faker = Faker\Factory::create();
Pyton_000
  1. $faker = \Faker\Factory::create();
codeszan
OK! ten element działa ! tylko jaka jest różnica pomiedzy:

  1. $faker = \Faker\Factory::create();


a

  1. $faker = Faker\Factory::create();


chodzi o ścieżki, czy jak?

Pytanie numer dwa, dotyczace tego samego problemu.
Gdy teraz chce wygenerować/załadować fake dane do bazy czyli php bin/console doctrine:fixtures:load.
Mam komunikat.

Attepted to call an undefined method named "presist" of class "Doctrine\ORM\EntityManager" Did you mean to call "presist"?
Czy to wina tego ze mam symfony 3.4 a ten ktoś z tutoriala symfony 2.0? Jak się pozbyć tego błędu?
viking
Przecież ci napisałem w pierwszym poście jaka jest ścieżka wyszukiwania. Jak dalej nie rozumiesz to wróć do podstaw namespace.
codeszan
to mój pierwszy projekt i to jeszcze na podstawie tutoriala, prosił bym o wyrozumiałość
viking
Mimo wszystko to zawsze od dokumentacji należy zaczynać naukę.
codeszan
cóż poradzić, że mi najlepiej wiedza wchodzi na realnych przykładach // to nie temat tej dyskusji
a do manuala również zaglądam.

czy odniesiesz się to w/w problemu?
viking
A widzisz tutaj gdziekolwiek metodę presist? https://github.com/doctrine/doctrine2/blob/...tityManager.php
Persist jak już. Zainstaluj sobie porządny edytor z podpowiadaniem składni.
codeszan
Gorzej, że to netbeans mi tak podpowiedział. Tak czy siak dziękuję.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.