2017-08-03 1 views
0

Ich baue eine REST API auf Laravel. Ich habe derzeit ein Modell (Projekt), das 2 dynamische Methoden (Liveindexe und Totalindexe) hat.Laravel Paginate mit dynamischer Methode

Ich möchte, dass die API (/ projects) auch die Werte dieser beiden Methoden zurückgibt.

Project Controller

public function index() 
{ 
    return Project::paginate(); 
} 

Projektmodell

class Project extends Model 
{ 
     protected $table = 'projects'; 

     protected $fillable = [ 
      'target' 
     ]; 

     public function indexes() 
     { 
      return $this->hasMany('App\indexes','project_id','id'); 
     } 

     public function totalindexes() 
     { 
      return $this->indexes()->count(); 
     } 

     public function liveindexes() 
     { 
      return $this->indexes()->whereNotNull('anchor')->count(); 
     } 
} 

Antwort

1

Um diese Elemente mit Ihrem Project Modell enthalten, fügen Sie diese Attribute zu Ihrem Modell werden Attribute angehängt, wenn sie in ein Array umgewandelt zu modellieren, oder es ist JSON Form.

Fügen Sie diese auf Ihren Code:

protected $appends = ['live_indexes', 'total_indexes']; 

public function getLiveIndexesAttribute() { 
    return $this->attributes['live_indexes'] = $this->liveIndexes(); 
} 

public function getTotalIndexes() { 
    return $this->attributes['total_indexes'] = $this->totalindexes(); 
} 
+0

dies früher versucht. Ich bekomme den folgenden Fehler Aufruf an eine Member-Funktion addEagerConstraints() auf Integer –

+0

Ah, tut mir leid. Ich wusste nicht, dass du die Ergebnisse zählst. Überprüfen Sie meine aktualisierte Antwort –

+0

Arbeitete! Dies konnte ich auch mit einer Closing-Funktion und withCount-Methode erreichen. Ich bevorzuge immer noch deine Methode. –

Verwandte Themen