Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony]Formularz -> Select, wartości z bazy
stirith
post
Post #1





Grupa: Zarejestrowani
Postów: 162
Pomógł: 2
Dołączył: 18.01.2008

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


Męczę się jakiś czas z takim problemem.

Mam tabelę Pizza w której jest kolumna: nazwa (określa nazwe pizzy)

Jak mam pobrać z bazy za pomocą propela wszystkie nazwy pizz (całą kolumne "nazwa") i później jak to wstawić do formularza select
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Gribo
post
Post #2





Grupa: Zarejestrowani
Postów: 237
Pomógł: 17
Dołączył: 1.11.2007
Skąd: Zielona Góra

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


Nie będę dawać ci rozwiązania na tacy ale myślę że ten link na pewno ci pomoże jeśli go jeszcze nie przestudiowałem to polecam

LINK

szczególnie przeczytaj ten paragraf Playing with the Choices
Go to the top of the page
+Quote Post
stirith
post
Post #3





Grupa: Zarejestrowani
Postów: 162
Pomógł: 2
Dołączył: 18.01.2008

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


To umieścić już umiem :-)

Tylko został problem z pobraniem danej kolumny z bazy

Próbując coś takiego:

Kod
$oCriteria = new Criteria();
        $oCriteria->clearSelectColumns();
        $oCriteria->addSelectColumn(AttackPeer::ATTACK_NAME);
        $this->table = AttackPeer::doSelect( $oCriteria );



to się wykrzacza:

Kod
[b]Notice[/b]:  Undefined offset:  1 in [b]C:\wamp\www\projects\game\lib\model\om\BaseAttack.php[/b] on line [b]279[/b]

[b]Notice[/b]:  Undefined offset:  2 in [b]C:\wamp\www\projects\game\lib\model\om\BaseAttack.php[/b] on line [b]280[/b]

[b]Notice[/b]:  Undefined offset:  3 in [b]C:\wamp\www\projects\game\lib\model\om\BaseAttack.php[/b] on line [b]281[/b]

[b]Notice[/b]:  Undefined offset:  4 in [b]C:\wamp\www\projects\game\lib\model\om\BaseAttack.php[/b] on line [b]282[/b]

[b]Notice[/b]:  Undefined offset:  1 in [b]C:\wamp\www\projects\game\lib\model\om\BaseAttack.php[/b] on line [b]279[/b]

[b]Notice[/b]:  Undefined offset:  2 in [b]C:\wamp\www\projects\game\lib\model\om\BaseAttack.php[/b] on line [b]280[/b]

[b]Notice[/b]:  Undefined offset:  3 in [b]C:\wamp\www\projects\game\lib\model\om\BaseAttack.php[/b] on line [b]281[/b]

[b]Notice[/b]:  Undefined offset:  4 in [b]C:\wamp\www\projects\game\lib\model\om\BaseAttack.php[/b] on line [b]282[/b]

[b]Notice[/b]:  Undefined offset:  1 in [b]C:\wamp\www\projects\game\lib\model\om\BaseAttack.php[/b] on line [b]279[/b]

[b]Notice[/b]:  Undefined offset:  2 in [b]C:\wamp\www\projects\game\lib\model\om\BaseAttack.php[/b] on line [b]280[/b]

[b]Notice[/b]:  Undefined offset:  3 in [b]C:\wamp\www\projects\game\lib\model\om\BaseAttack.php[/b] on line [b]281[/b]

[b]Notice[/b]:  Undefined offset:  4 in [b]C:\wamp\www\projects\game\lib\model\om\BaseAttack.php[/b] on line [b]282[/b]



Jak mam pobrać wszystkie dane tylko z jednej kolumny ?
Go to the top of the page
+Quote Post
Pr0100
post
Post #4





Grupa: Zarejestrowani
Postów: 114
Pomógł: 24
Dołączył: 18.01.2008
Skąd: Warszawa

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


Cytat
Tylko został problem z pobraniem danej kolumny z bazy


w Propelu chcąc ograniczyć ilość kolumn pobieranych z bazy danych możesz:
- przeprowadzić ręcznie hydratacja danych (dużo kodu)
- stworzyć 2 modele do tej samej tabeli (nie praktyczne)
- bawić się lazyLoad (nie jest to pełne rozwiązanie problemu)
- zmienić ORM na Doctrine (najlepsze rozwiązanie)
Go to the top of the page
+Quote Post
Gribo
post
Post #5





Grupa: Zarejestrowani
Postów: 237
Pomógł: 17
Dołączył: 1.11.2007
Skąd: Zielona Góra

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


no ale jak se pobierzesz nawet wszystkie kolumny z bazy to wyświetlić możesz tylko tą na której ci zalezy pisząc metode __tostring() podajże tak się ona nazywa. Wtedy w polu select będzie widoczna tylko ta kolumna na jakiej ci zależy. Oczywiscie metode ta zamieszczasz w pliku modelu z którego wyciągasz informacje.
Go to the top of the page
+Quote Post
dr4ko
post
Post #6





Grupa: Zarejestrowani
Postów: 49
Pomógł: 4
Dołączył: 16.07.2008
Skąd: Gdańsk

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


__toString() to najłatwiejsze rozwiązanie ale mało wydajne. Żeby pobrać tylko interesujące nas pola można zrobić tak:

  1. $oCriteria = new Criteria();
  2. $oCriteria->clearSelectColumns();
  3. $oCriteria->addAsColumn('attackName', AttackPeer::ATTACK_NAME);
  4. $result = AttackPeer::doSelectStmt( $oCriteria );
  5. $result_array = array();
  6. if($result)
  7. {
  8. while($row = $result->fetch(PDO::FETCH_ASSOC))
  9. {
  10. $result_array[] = $row;
  11. }
  12. }
  13. return $result_array;


Wynikiem jest taka tablica: $result_array[0]['attackName']. Przydaje się do pobierania dużej ilości rekordów z kilku tabel na raz.

Ten post edytował dr4ko 14.10.2009, 13:59:22
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.12.2025 - 14:05