Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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. ?>
Go to the top of the page
+Quote Post
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.
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ę.
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ę (IMG:http://forum.php.pl/style_emoticons/default/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?
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.
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
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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
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: 10.10.2025 - 15:27