Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF2][Symfony] - nelmio/alice i fzaninotto/Faker, generowanie danych
damianooo
post
Post #1





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/questionmark.gif) ?') // 'Hello wgt'
  13. bothify('Hello ##(IMG:style_emoticons/default/questionmark.gif) ') // 'Hello 42jz'
  14. asciify('Hello ***') // 'Hello R6+'
  15. regexify('[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}'); // sm0@y8k96a.ej


Go to the top of the page
+Quote Post
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Co oznacza "w takiej kolejności"?
Go to the top of the page
+Quote Post
damianooo
post
Post #3





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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"


Ten post edytował damianooo 14.04.2015, 13:41:23
Go to the top of the page
+Quote Post
kpt_lucek
post
Post #4





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Zarejestruj jako usługę i otaguj (zgodnie z wbudowanymi usługami)
Go to the top of the page
+Quote Post
damianooo
post
Post #5





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
kpt_lucek
post
Post #6





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


https://github.com/h4cc/AliceFixturesBundle...iders-for-faker
Go to the top of the page
+Quote Post
damianooo
post
Post #7





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

Ostrzeżenie: (0%)
-----


wychodzi na to, że ten serwis do niczego mi nie był potrzebny bo wróciłem do punktu wyjścia (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/sad.gif)

Ten post edytował damianooo 17.04.2015, 10:35:38
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 01:24