Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF2][Symfony] - nelmio/alice i fzaninotto/Faker
Forum PHP.pl > Forum > PHP > Frameworki
damianooo
Potrzebuję za pomocą pakietu nelmio/alice załadować do bazy danych listę danych w takiej kolejności:

  1. 1,2,3,4,3,4,3,5,6,5,6,5,4,3,4,5


mój YAML wygląda tak:

  1. My\CostamBundle\Entity\User:
  2. user{Damian,Wojtek,Mateusz,Marcin,Krystian,Piotrek1,Tomek,Michał,Adam1,Przemek1,Łukasz,Piotrek2,Kuba,Przemek2,Adam2,Piotrek3}:
  3. username: <current()>
  4. password: <current()>
  5. email: <current()>@test.pl
  6. digit: <sentences(1,2,3,4,3,4,3,5,6,5,6,5,4,3,4,5)>
  7. priority: 1


niestety nie znalazłem w opisie bundla odpowiedniej funkcji, która może to zrobić.

Próbowałem więc na różne sposóby:

  1. 1) digit: [1,2,3,4,3,4,3,5,6,5,6,5,4,3,4,5] - wywala błąd
  2. 2) digit: (1,2,3,4,3,4,3,5,6,5,6,5,4,3,4,5) - ładuje same zera
  3. 3) digit: ({1,2,3,4,3,4,3,5,6,5,6,5,4,3,4,5}) - ładuje same zera
  4. 4) digit: {1,2,3,4,3,4,3,5,6,5,6,5,4,3,4,5} - wywala błąd
  5. 5) digit: array(1,2,3,4,3,4,3,5,6,5,6,5,4,3,4,5) - ładuje same zera
  6. 6) digit: <array(1,2,3,4,3,4,3,5,6,5,6,5,4,3,4,5)> - wywala błąd
  7. 7) digit: <sentences(1,2,3,4,3,4,3,5,6,5,6,5,4,3,4,5)> - ładuje same zera


Próbowałem zastosować też bundla fzaninotto/Faker ale nie ma tam takiej funkcji jakiej potrzebuję:

  1. randomDigit // 7
  2. randomDigitNotNull // 5
  3. randomNumber($nbDigits = NULL) // 79907610
  4. randomFloat($nbMaxDecimals = NULL, $min = 0, $max = NULL) // 48.8932
  5. numberBetween($min = 1000, $max = 9000) // 8567
  6. randomLetter // 'b'
  7. randomElements($array = array ('a','b','c'), $count = 1) // array('c')
  8. randomElement($array = array ('a','b','c')) // 'b'
  9. shuffle('hello, world') // 'rlo,h eoldlw'
  10. shuffle(array(1, 2, 3)) // array(2, 1, 3)
  11. numerify('Hello ###') // 'Hello 609'
  12. lexify('Hello questionmark.gif?') // 'Hello wgt'
  13. bothify('Hello ##questionmark.gif') // 'Hello 42jz'
  14. asciify('Hello ***') // 'Hello R6+'
  15. regexify('[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}'); // sm0@y8k96a.ej


Pyton_000
Co oznacza "w takiej kolejności"?
damianooo
Może przedstawię to jaśniej.

Zamiast robić tak:

  1. My\CostamBundle\Entity\User:
  2. user_1:
  3. username: Damian
  4. digit: 32
  5. user_2:
  6. username: Wojtek
  7. digit: 45
  8. user_3:
  9. username: Mateusz
  10. digit: 76



Chciałem to zrobić z pomocą Faker bundla tak:
  1. My\CostamBundle\Entity\User:
  2. user{Damian,Wojtek,Mateusz}:
  3. username: <current()>
  4. digit: <array(32,45,76)>


ale właśnie taki zapis nie działa:

  1. digit: <array(32,45,76)>

ani kilka powyższych z poprzedniego posta

W Faker widzę tylko funkcje mieszające, losujące itd.

Próbowałem też stworzyć klasę która dziedziczy po bazowej klasie Faker'a i w niej metodę, która zwraca tablicę cyfr :

Dfaker.php

  1. namespace My\CostamBundle\DataFixtures\ORM;
  2. use Faker\Provider\Base as MainFaker;
  3. class Dfaker extends MainFaker{
  4. protected $digits = array(6,4,5,6,7,3,9,4,1,2,4,3,7,8,5,6);
  5. public function getDigits(){
  6. return $this->digits;
  7. }
  8. }


user.yaml:

  1. My\CostamBundle\Entity\User:
  2. user{Damian,Wojtek,Mateusz,Marcin,Krystian,Piotrek1,Tomek,Michał,Adam1,Przemek1,Łukasz,Piotrek2,Kuba,Przemek2,Adam2,Piotrek3}:
  3. username: <current()>
  4. password: <current()>
  5. email: <current()>@test.pl
  6. is_play: 1
  7. digit: <getDigits()>


jednak przy próbie załadowania danych wywala błąd:

  1. [InvalidArgumentException]
  2. Unknown formatter "getDigits"
kpt_lucek
Zarejestruj jako usługę i otaguj (zgodnie z wbudowanymi usługami)
damianooo
zrobiłem tak:

w pliku My\CostamBundle\Resources\config\services.yml :

  1. parameters:
  2. costam.service.class : My\CostamBundle\Services\Dfaker
  3.  
  4. services:
  5. dservice:
  6. class: %costam.service.class%
  7. tags:
  8. - { name: getDigits }



nie wiem co w tym tagu powinno być ...
mam w ogóle dobrze ten serwis ?
błąd nadal ten sam a więc ciągle nie widać mojej metody sad.gif
damianooo
wychodzi na to, że ten serwis do niczego mi nie był potrzebny bo wróciłem do punktu wyjścia sad.gif

nadal nie mogę przekazać dla każdego użytkownika odpowiedaniej przyporządkowanej mu wg tablicy danej w polu "priority" .

przykładowo ... chcę aby:

  1. user: Damian miał priority = 23
  2. user: Wojtek miał priority = 42
  3. user: Mateusz miał priority = 13
  4. user: Marcin miał priority = 19
  5. ....


dlatego chciałem zrobić w pliku user.yml coś w stylu:



  1. My\CostamBundle\Entity\User:
  2. user{Damian,Wojtek,Mateusz,Marcin,Krystian,Piotrek1,Tomek,Michał,Adam1,Przemek1,
  3. Łukasz,Piotrek2,Kuba,Przemek2,Adam2,Piotrek3}:
  4. username: <current()>
  5. password: <current()>
  6. email: <current()>@test.pl
  7. is_play: 1
  8. priority: {23,42,13,19,53,23,33,12,23,24,67,43,23,11,76,45}


ale tak nie działa niestety sad.gif
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.