2016-11-09 10 views
5

Tworzę system głosowania dla strony z linkami, nad którą pracuję.Laravel 5 - Sprawdzanie, czy użytkownik "głosował" po oddaniu wszystkich głosów dla zasobu jako relacji

Gdy użytkownik głosuje na link jako nowy wiersz, jest dodawany do bazy danych za pomocą identyfikatora i identyfikatora użytkownika.

Wykazując te linki w moim kontrolera Wzywam związek (głosów):

$links = Link::orderBy('created_at', 'desc')->with('votes')->paginate(20); 

i relacji w modelu

public function votes() 
{ 
    return $this->hasMany('\App\LinkVote'); 
} 

Moim zdaniem Używam foreach na $ linki do wyświetlenia każdego z nich. Moim celem jest pokazanie innego przycisku, jeśli użytkownik już głosował na ten link.

Kiedy dd'ing $ link-> głosów uzyskać:

enter image description here

Jak mogę sprawdzić (i moim zdaniem w foreach) jeśli aktualnie zalogowanego użytkownika jest w tej tablicy głosów ?

Odpowiedz

5

Można spróbować contains():

$link->votes->contains('user_id', auth()->user()->id); 

Or where() z count():

if ($link->votes->where('user_id', auth()->user()->id)->count()) { 
+1

Perfect, znacznie prostsze niż ja układałem w głowie! – Lovelock

Powiązane problemy