![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 151 Pomógł: 2 Dołączył: 2.08.2012 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie
Mam sobie tabele user: user_id|name 1 |jacek 2 |wacek 3 |placek oraz tabele friends id|friend1_id|friend2_id 1| 1 |2 2| 1 |3 kolumnom friend1_id oraz friend2_id nadałem klucze obce wiążece z user/user_id Z tabeli friend wynika ze jacek zna wacka i placka. Walcze z tym cały dzień i nie potrafie wypisac na profilu jacka jego znajomych. Mam ksiażke gajdy ale nie ma tam takiego przykładu a sam nie potrafie dojśc do tego jak to zrobic. Tzn nie wiem jak napisac w akcji show Chciałbym uzyskac na podstawie id jacka czyli 1: 2 wacek 3 placek Jakich metod użyc. Czy to jest relacja 1:n?? Nie pasuje mi to ani do n:m ani do 1:n |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jeden user zna N userów, jaka to będzie relacja?
A do tego select:
Ten post edytował IceManSpy 3.08.2012, 04:20:19 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 151 Pomógł: 2 Dołączył: 2.08.2012 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Chyba nie dokońca o to mi chodziło:) Z selectem zastanawiałem sie czy nie zrobic joina wtedy miałbym usyskane dane z tabeli user(name) na podstrawie tabeli friends ale nie ma czegos prostszego?? Bo wtedy to niczym nie będzie rózniło się od zwykłego sqla??
Chciałbym uzyskac tabelkę 2|wacek 3|placek Ten post edytował johnyMajster 3.08.2012, 10:16:11 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Tabela relacji zawiera dwa id - dwóch znajomych.
Zwykle pierwszy to zapraszający, drugi obierający zaproszenie. Nie zmienia to faktu, że przy wyświetlaniu znajomych danej osoby nie ma znaczenia kto był kim i w warunku dla wyświetlenia listy znajomych powinno być
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 151 Pomógł: 2 Dołączył: 2.08.2012 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
CODE $Friends = new Application_Model_DbTable_Friends(); $select=$Friends->select()->where('friend1_id=?', 1); $friends=$select->fetchAll(); $this->view->friends = $friends; probowałem cos takiego ale dlaczego wypisuje mi 'Unrecognized method 'fetchAll()' ![]() Ten post edytował johnyMajster 3.08.2012, 10:56:00 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 60 Dołączył: 25.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
fetchAll to metoda tabeli, nie selecta
obiekty select przekazuje się do metod pobierających -------------------- there is much to be learned
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 151 Pomógł: 2 Dołączył: 2.08.2012 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
czyli fetchAll stosuje sie tylko do wypisania wszystkiego od A do Z z tabeli?? To w takim razie czego uzyc jak chce wypisac po następującej linijce
$select=$Friends->select()->where('friend1_id=?', 1); rekordy z $select? ![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
$select=$Friends->select()->where('friend1_id=?', 1); - generuje zapytanie (np. SELECT * FROM tabela WHERE tabela.b = 1)
$dane = $Friends -> fetchAll($select); - właściwe pobieranie danych wg wcześniej wygenerowanego zapytania Ten post edytował CuteOne 3.08.2012, 11:26:18 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 151 Pomógł: 2 Dołączył: 2.08.2012 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
CODE $Friends = new Application_Model_DbTable_Friends(); $select=$Friends->select()->where('friend1_id=?', 1); $this->view->friends = $Friends -> fetchAll($select); Po tym zabiegu mogę wypisac. 1|2 1|3 ażeby wypisaac 2|wacek 3|placek muszę użyc joina? ![]() |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Po tym zabiegu mogę wypisac. 1|2 1|3 ażeby wypisaac 2|wacek 3|placek muszę użyc joina? ![]() Zastanów się, proszę... ![]() -------------------- |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 151 Pomógł: 2 Dołączył: 2.08.2012 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Znajomy powiedział mi że zend to magiczne narzędzie ułątwiające pracę więc szukałem jakis magisznych sposobów na pobranie danych a tu jezeli chodzi o bazy wszystko działa tak samo jak bez zenda tylko obiektowo
![]() Warto uczyc sie doctrin?? |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 60 Dołączył: 25.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli ORM Zenda jest za skomplikowany, to z Doctrine będzie jeszcze gorzej...
![]() BTW żadne z tych narzędzi nie zrobi za Ciebie niczego samo. Pewien wkład pracy własnej i tak musisz włożyć chociażby na poznanie, jak go poprawnie skonfigurować i używać. -------------------- there is much to be learned
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 151 Pomógł: 2 Dołączył: 2.08.2012 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Mam mały problem :)jak uruchomic cos takiego?
zapozyczyłem to stąd link Z instrukcji wynika że trzeba użyc takie cos
Ale nie działa mi to ze względu na zawartośc nawiasa. Co tam wpisac. W application ini mam zdefiniwaną bazę i hasła. Z czego sie uczyliscie baz danych ZF?? |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Po co tego używać "$db = Zend_Db::factory( ...options... );"? Jeśli masz model, który dziedziczy po Zend_DB_* to nie musisz tego robić. Robisz $query = $this->select .... a potem $array = $this->fecthAll($query). Koniec, kropka.
Cytat Z czego sie uczyliscie baz danych ZF?? Metodą prób i błędów. -------------------- |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 151 Pomógł: 2 Dołączył: 2.08.2012 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
A masz w ogóle coś w klasie Application_Model_DbTable_Friends? Najlepiej pokaż jej zawartość (o ile nie jest na więcej niż 100 linijek).
-------------------- |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 151 Pomógł: 2 Dołączył: 2.08.2012 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Oto i ona:)
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Więc zaczniemy od początku
![]() 1. Poczytaj o MVC o co chodzi itd, ale skoro zabrałeś się za Zenda to mniej więcej wiesz o co kaman. 2. Model (zwłaszcza pobierający dane z bazy) służy do operacji na danych (dodawanie, edytowanie, usuwanie, wybieranie), a nie tylko deklaracji nazwy tabeli czy powiązania między nimi. Twój model powinien wyglądać mniej więcej tak (pisane z palca w celu pokazania przykładu):
A wtedy w kontrolerze robisz:
Skoro czytałeś książkę Gajdy, to powinieneś to wiedzieć. -------------------- |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 151 Pomógł: 2 Dołączył: 2.08.2012 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Próbowałem tak zrobic z poziomu akcji wcześniej. Teraz zrobiłem tak jak mówisz ale też jest błąd związany z $db z linijki:
Tresc błedu to: Fatal error: Call to a member function select() on a non-object in C:\xampp\htdocs\port\application\models\DbTable\Friends.php on line 19 w apllication ini mam tak: resources.db.adapter = "pdo_mysql" resources.db.params.host = "localhost" resources.db.params.username = "redaktor" resources.db.params.password = "supertajne" resources.db.params.dbname = "main_base" resources.db.params.charset = "utf8" |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
U mnie błąd w 19 linijce, zamiast $db-> ma być $this->
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.06.2025 - 00:48 |