![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 14.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Używam CakePHP i staram się napisać czat w stylu facebook`owego. Wyjaśnie o co dokładnie mi chodzi: Posiadam tabele messages z kolumnami - id - message - user_from - user_to -date Oraz tabela uzytkowników (users) z kolumnami -id -username -name -surname -password - itd (IMG:style_emoticons/default/smile.gif) No i teraz powiedzmy że jestem zalogowany jako użytkownik o id 1 i wchodze do skrzynki wiadomości. Chciałbym tu widzieć tylko po 1 NAJNOWSZEJ wiadomości w której jestem nadawcą bądź odbiorcą. Czyli tak jak jest np w skrzynce gmaila, że widizmy ostatnią wiadomość z jakimś użytkownikiem i możemy w nią wejść żeby zobaczyć więcej... Sprawia mi to nie lada problem, udało mi się dojść do wybrania wiadomości i zgrupowania ich po user_from i user_to, ale problem w tym ze wybiera on wiadomosci z najmniejszym id... czyli pierwsze napisane... A chciałbym żeby wybrał mi najnowsze Oto zapytanie które prawie rozwiązało mój problem:
Niestety tak jak wspomniałem nie sortuje mi po id DESC tylko robi ASC... Order wogole nie ma na to wpływu.. Drugim problemem jest to że w sumie wybiera 2 ostatnie wiadomości od nadawcy i odbiorcy (dlatego ze wybiera po user_from i user_to), dużo fajniej było by gdyby wybierało tylko 1 ostatnią z najwiekszym id bądź datą... Wyeliminuje to późniejszy problem przy stronicowaniu. Zrzuty struktury z mojej bazy, gdyby ktoś miał ochotę sie pobawić.
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Pokaż, jakich kryteriów używasz (w kodzie).
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 14.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Nie bardzo rozumiem co masz na myśli, kod z cake? modelu?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 14.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Niestety to zwraca tylko jeden wynik... A chce wybrać po 1 ostatniej wiadomości + pobrać dane użytkowników. Nie wiem czy będzie to w ogóle możliwe... |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Kryteria, które wykorzystujesz w metodzie find*.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 14.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
tak na szybko przyszło mi do głowy coś takiego
i ja bym zamienił LEFT JOIN na JOIN - przecież użytkownik zawsze istnieje skoro napisał wiadomość, a patrząc w drugą stronę skoro system zezwolił na wysłanie wiadomości to użytkownik docelowy też istnieje |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 15:44 |