Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]Formularz -> Select, wartości z bazy
Forum PHP.pl > Forum > PHP > Frameworki
stirith
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
Gribo
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
stirith
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 ?
Pr0100
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)
Gribo
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.
dr4ko
__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.
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.