Próbuję stworzyć system przyjaźni w grze 5 i utknąłem. Mam tabeli friends_user które wyglądać tak:Laravel - Przyjaźń
- id
- user_id
- friend_id
- stan
Oto punkt, idę do strony użytkownika, a Ii Chcę zobaczyć, jaki jest mój związek z tym użytkownikiem, 4 rozwiązania:
- Jesteśmy przyjaciółmi
- Nie
- jesteśmy On nie zaakceptował żądania jeszcze
- muszę potwierdzić, czy nie.
Chcę utworzyć metodę sprawdzającą, czy użytkownik jest przyjacielem z innym, prostym. Mam kolumnie „Stan”, która jest logiczna (0 na oczekiwaniu i 1 dla przyjaciół) Idealne rozwiązanie dla mnie byłoby, aby móc w jeden sposób, by sprawdzić, czy:
- Użytkownicy są przyjacielu więc albo ("user_id", Auth :: user() -> id) -> i ("friend_id", $ friend-> id) lub odwrotnie ("user_id", $ friend-> id) -> i (' friend_id ', Auth :: user() -> id), musi sprawdzić 2 zmysły
- Wysłałem żądanie i muszę poczekać na jego odpowiedź
- Otrzymałem wniosek i muszę go zaakceptować.
- Nie jesteśmy przyjaciółmi, więc mogę go dodać.
Więc jeśli możesz mi powiedzieć, gdzie się mylę tutaj, tu jest moja logika (tylko dla sprawdzenia, czy użytkownicy są przyjaciel): User.php
public function isFriend($slug)
{
// Get both user
$user = Auth::user();
$receiver = User::where('slug', $slug)->first();
// get list of friends (so who have status = 1)
$result = Friends::where('status', 1);
// Get users where user id is equal to connected
$result = $result->where('user_id', $user->id)->where('friend_id', $receiver->id);
$result = $result->orWhere('user_id', $receiver->id)->where('friend_id', $user->id);
$result = $result->get();
if(count($result) == 0)
return false;
return true;
}
Po robię te kontrole moim zdaniem .
To działa praktycznie, ale tylko wtedy, gdy ja (bieżący użytkownik) wysłał żądanie, ale jeśli jest odwrotnością, zwraca mi użytkownika, nawet jeśli status jest na poziomie 0. Myślę, że mój $ wynik kasuje pozostałe. t to? Jakie jest rozwiązanie?
Mam nadzieję, że jest to jasne i jeśli możesz mi powiedzieć, jak to zrobić w czysty sposób, byłoby wspaniale.
Sprawdź tę serię .. https://laracasts.com/series/build-a-laravel-app-from-scratch Jest tam lekcja o przyjaciołach – bretterer
Ty bawiących rzeczy trochę dlaczego masz stół Przyjaciół? Znajomy nie jest użytkownikiem? jeśli tak, to dlaczego nie masz wielu do wielu własnych relacji na stole użytkowników? –
@bretterer Musisz uzyskać subskrypcję, aby uzyskać dostęp do wideo. (Ale jeśli chcesz się nauczyć o laravel i php, jest to bardzo dobry sposób na zainwestowanie 9 $) – Needpoule