2017-08-03 29 views
0

我正在Laravel上構建一個REST API。我目前有一個模型(項目),它有2個動態方法(實時索引和總索引)。Laravel分頁與動態方法

我希望API(/ projects)也返回這兩個方法的值。

項目控制器

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

項目模型

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(); 
     } 
} 

回答

1

要包括這些項目與Project模型,將它們添加到您的模型的屬性,屬性附加時模型轉化成一個陣列,或者它是JSON形式。

添加到您的代碼:

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

試過這點。我得到以下錯誤 調用成員函數addEagerConstraints()整數 –

+0

啊,對不起。我沒有意識到你在計算結果。檢查我更新的答案 –

+0

工作!我也能夠使用閉包函數和withCount方法實現此目的。我仍然比較喜歡你的方法。 –