2017-05-10 3 views
2

versuchte ich zu eifrig Last eine Beziehung:Anruf auf eine Elementfunktion addEagerConstraints() auf integer

$tournaments = Tournament::with('numCompetitors')->latest()->paginate(config('constants.PAGINATION')); 

Meine Beziehung im Turnier eine ganze Zahl zurückgibt:

public function numCompetitors() 
{ 
    return $this->competitors()->count(); // it returns 24 
} 

Damit erhalte ich:

Call to a member function addEagerConstraints() on integer 

Ich verstehe nicht, warum es scheitert.

Antwort

3

Sie tun es falsch. Wenn Sie möchten, Beziehung zählen, verwenden withCount() mit richtig definierten Beziehung:

Tournament::withCount('competitors')->latest()->paginate(config('constants.PAGINATION')); 

Wenn Sie die Anzahl der Ergebnisse aus einer Beziehung zählen wollen, ohne sie tatsächlich Laden Sie die withCount Methode verwenden kann, die einen Platz wird {relation}_count Spalte auf Ihre resultierenden Modelle.

https://laravel.com/docs/5.4/eloquent-relationships#counting-related-models

+1

Great! Genau das, was ich vergessen habe! Tx! –

Verwandte Themen