![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Nieautoryzowani Postów: 34 Pomógł: 1 Dołączył: 22.06.2009 Skąd: Koszalin/Poznań Ostrzeżenie: (0%) ![]() ![]() |
Jako fan Peara i jego DB boli mnie że nie mogę (albo nie umiem) wyciągnąć tylko jednego wiersza za pomocą zapytania. Może najlepiej będzie na przykładzie. Załóżmy że chcę wyciągnąć sobie dane jakiegoś usera. W rezultacie spodziewam dostać tylko jeden wiersz. Robię w modelu (w uproszczeniu):
Dostaję wtedy tablicę jednoelementową w której jest tablica z danymi usera, z której muszę wyłuskać ten jeden element. Czy jest jakiś sposób żeby dostać od razu tablicę z danymi usera? Dotychczas robiłem to używając array_pop():
ale jest to rozwiązanie wg mnie nieeleganckie. Czy nie ma czegoś w stylu ->result_row()? Przekopałem dokumentację i pliki ale nic ciekawego nie było. Znalazłem coś takiego jak ->current() ale nie wiem czy to rozwiąże mój problem. Jak Wy sobie z tym radzicie? Druga rzecz to przygotowywanie list do <selectów>. Mam tabelę userów, robimy zapytanie wyciągające id_user i login. Teraz chciałbym spreparować tak dane, żeby można je było wstawić do form::select. Muszę wszystko jeszcze raz przefeczować, wstawiając do indeksu tablicy id_user a do wartości jego login. W Pearze było to tak fajnie rozwiązane, że jeśli robiłem zapytanie "SELECT id_user, login FROM (...)" to id_user (w zasadzie pierwsza wybrana kolumna) mogła się od razu stać indeksem tablicy. Tu indeksy są z góry definiowane jako numeryczne. Czy można to jakoś zmienić? Jak Wy przygotowujecie tablicę z wartościami dla <selecta>? Mowa o Kohana2.3.4, nie korzystam z ORM (na razie) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
@Piespluto: Problem z Twoim kodem jest jeden... A co jeśli rekordu spełniającego warunek nie ma? Jak ma wyciągnąć current() z niczego? Ogólnie dobrze phpion już napisał i sam robię podobnie. Rozwiązaniem jest więc to, co sam autor zasugerował.
Co do wartości idących w select to nie liczę nigdy na indeksy i wartości z bazy. Często je jeszcze obrabiam i dlatego taka funkcjonalność jak "pierwsza kolumna staje się indeksem tablicy" jest m zazwyczaj zbędna. Poza tym skąd masz pewność, że wartość jest ZAWSZE unikatowa? Ja jako programista też jestem tylko człowiekiem i mogę się w zapytaniu walnąć. W efekcie dostanę wiersze mogące się duplikować (zakładam, że skrypt/funkcja tworzące select mogą dostać dowolną tablicę) a z tego co czytam, nie walidujesz tych danych, tylko zakładasz z góry ich unikatowość i możesz mieć potem problem. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 14.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 15:06 |