![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 121 Pomógł: 2 Dołączył: 22.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam was
Chcialbym sie poradzic, jakiego zapytania najlepiej uzyc by wyciagnac w jednym zapytaniu dane z jednej tabeli i w jednym polu odwolac sie do innej tabeli w ktorej jest klucz obcy. Wiec mam takie sobie 2 tabele: Kod Club: id: , title:, owner_id: foreignTable: User, foreignReference: id: User: id:, login:, password:, nick: Narazie nie mam nic napisane i zastanawiam sie czy bedzie potrzebne hydrate czy zwykly Join. Bo dla kazdy rekordu pobieranego w tabeli club, ma sie takze wyswietlac nazwa login z tabeli user do pola owner_id.. Czyli DLA PRZYKLADU we widoku bym pobieral dane z tabeli club: $x->getTitle, $x->getLogin ( ktory ma byc pobierany z tabeli user) ale nie wiem jak to zaimplementowac. I wlasnie jakiej metody sie najlepiej trzymac?? To moj pierwszy post na forum wiec prosze o wyrozumialosc:))) |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Ten post edytował mike 22.03.2009, 23:24:29 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 121 Pomógł: 2 Dołączył: 22.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zmienilem troche tabele i wyglada to tak:
Kod Party: id: , title:, club: foreignTable: Club, foreignReference: id, owner_id: foreignTable: User, foreignReference: id: User: id:, login:, password:, nick: Club: id:, name: Teraz wchodze na wybrany klub i zeby wyswietlic party to sortuje je wedlug: Kod public static function getPartyFromClub($id) { $criteria = new Criteria; $criteria->add(self::CLUB, $id); return self::doSelect($criteria); } i w akcji mam tak: Kod $id = $request->getParameter('id'); // aktualny ID klubu $this->users_party = PartyPeer::getPartyFromClub($id); a we widoku tak: Kod <table> <?php foreach($users_party as $party) :?> <tr> <td> <?php echo $party->getTitle() ?></td><td><?php echo $party->getOwnerId() ?></td> </tr> <?php endforeach; ?> </table> i teraz jak we widoku wpisze: Kod <?php echo $party->getOwnerId()->getLogin() ?> to jest blad Kod <b>Fatal error</b>: Call to a member function getLogin() on a non-object i to rozumiem bo nie mam podlaczonej tabeli USER do zapytania. Ale nie wiem jak sprecyzowac zapytanie aby w jednym zapytaniu umiescic wszystko tzn: - posortowac party wedlug CLUB zeby wyswietlic w danym klubie - pobrac pole z tabeli party: title - dla kazdego rekordu party zamiast wyswietlac id owner wyswietlac login czyli get->Login() z tabeli USER Wiem ze jest to na pewno proste, ale nie mam doswiadczenia w tym i prosze o pomoc bo nie moge sobie z tym poradzic. Czytalem juz o propelu, i w symfony jobeeta.... :/ :/ :/ |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Co do Raczej ciężko, żeby getOwnerId zwracało obiekt "owner" - będzie to już jego Id (chociaż z Propelem nie mam zbyt dużego doświadczenia) Dokładnie tak. Powinno być:
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 121 Pomógł: 2 Dołączył: 22.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
niestety nadal wyskakuje blad
Kod <b>Fatal error</b>: Call to a member function getLogin() on a non-object przenioslem to do akcji narazie zeby sie z tym uporac... Kod $id = $request->getParameter('id'); $c = new Criteria(); $c->add(TpPartyPeer::CLUB, $id); $c->addJoin(TpPartyPeer::OWNER, TpUserPeer::ID, Criteria::LEFT_JOIN); $this->users_party = TpPartyPeer::doSelectJoinAll($c); Edit: zmienilem kolumne w tabeli Party z owner_id na owner. co mam zle ? Wszystko pokazuje oprocz w widoku: $party->getOwner()->getLogin(). ;/ ;/ Ten post edytował janek9 23.03.2009, 16:42:05 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 662 Pomógł: 45 Dołączył: 26.03.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Czyli DLA PRZYKLADU we widoku bym pobieral dane Cytat a we widoku tak: Cytat i teraz jak we widoku wpisze: W widoku (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 19:46 |