Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] Propel, pobieranie określonych kolumn
Balon
post
Post #1





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

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


W jaki sposób pobrać tylko określone kolumny przy zapytaniu? Przez Criteria? Właśnie próbuje i to mi nic nie daje. Pobiera nadal wszystkie kolumny.

  1. <?php
  2. $c->addSelectColumn(UserDataPeer::ACTIVATED);
  3. ?>


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


  1. <?php
  2.  
  3. $c->clearSelectColumns()
  4. $c->addSelectColumn(UserDataPeer::ACTIVATED);
  5.  
  6. ?>
Go to the top of the page
+Quote Post
Balon
post
Post #3





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

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


Hm, nie działa.

Pobieram to tak, najpierw jadę pierwszą tabelę User pobieram jeden rekord i jadę

  1. <?php
  2. $c = new Criteria;
  3. $c->add(UserPeer::USERNAME, $username);
  4. $c->add(UserPeer::PASSWORD, $password);
  5.  
  6. $u = UserPeer::doSelectOne($c);
  7.  
  8. // user exists?
  9. if (!is_null($u))
  10. {
  11. $c = new Criteria;
  12. $c->clearSelectColumns();
  13. $c->addSelectColumn(UserDataPeer::ACTIVATED);
  14. $c->setLimit(1);
  15.  
  16. $activated = $u->getUserDatas($c);
  17. ?>


I to w linii 16 generuje wieeelkie zapytanie z masą ilością kolumn, a ja potrzebuje jednej.


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post
destroyerr
post
Post #4





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Propel generuje metody, żeby pobierać wszystkie kolumny do obiektów, nie pojedyncze kolumny.
Wyjściem jest dodanie do criterii id usera.
Go to the top of the page
+Quote Post
Balon
post
Post #5





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

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


Nie wydaje mi się, żeby było to niewykonalne. Chyba by było bez sensu pobierać masę danych jeśli potrzebujesz tylko jedną kolumnę.


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post
destroyerr
post
Post #6





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Jest wykonalne, ale nie tak prosto jak chcesz tego.
  1. <?php
  2. $c->add(UserDataPeer::USER_ID, $user->getId());
  3. $rs = BasePeer::doSelect($c);
  4. $rs->next();
  5. $activated = $rs->get(1);
  6. ?>

Powinno zadziałać, ale głowy nie daję tongue.gif
Go to the top of the page
+Quote Post
Balon
post
Post #7





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

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


Hm, ale addSelectColumn od niczego chyba nie jest, fakt?


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post
destroyerr
post
Post #8





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Jest od dodania kolumny do wybrania w zapytaniu. Wynika to z dokumentacji i z działania też. Sprawdziłeś kod który podałem? Zadziałało jak tego potrzebujesz?
Go to the top of the page
+Quote Post
Balon
post
Post #9





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

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


Cytat
Jest od dodania kolumny do wybrania w zapytaniu

No to powinno działać tak jak tego potrzebuje - nie działa.


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post
destroyerr
post
Post #10





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


A masz jakiś błąd albo coś nie tak?
Twoim sposobem nie da się tego zrobić. Zobacz sobie metode getUserDatas wygenerowana przez propela tam dodawane są za pomoca właśnie addSelectColumn wszystkie kolumny, ponieważ metoda getUserDatas ma zwrócić obiekty!
Można jeszcze nadpisać metode getUserDatas.
Go to the top of the page
+Quote Post
Balon
post
Post #11





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

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


Cytat
Można jeszcze nadpisać metode getUserDatas.

No tak, to będzie najlepsze rozwiązanie.

Teraz mam inny problem.

Jak pobieram coś w ten sposób
  1. <?php
  2. $activated = $u->getUserDatas($c);
  3. ?>

To mimo, że generuje dobre zapytanie to otrzymywane dane są zupełnie inne, kompletnie przekłamane.. A kiedy wykonuje sobie to zapytanie z poziomu phpmyadmina to jest wszystko ok. Czego może to być wina?

Czy może to być wina tego, że tabele odwołujące się do tabeli User nie posiadają Primary Key ?

Ten post edytował Balon 11.07.2008, 20:12:50


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post
destroyerr
post
Post #12





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Może te dane są przekłamane ze względu na kolumne na którą dodałeś. Chyba, że ten kawałek kodu już usunąłeś.
Go to the top of the page
+Quote Post
Balon
post
Post #13





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

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


Jesteś po prostu świetny! Pomogłeś mi raz dwa, a ja problem mam raz dwa z głowy. Ogromny plus dla Ciebie kolego winksmiley.jpg


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 23:55