Laravel Paginate采用动态方法

时间:2017-08-03 06:47:26

标签: php laravel

我正在Laravel上构建REST API。我目前有一个模型(项目),它有2个动态方法(liveindexes和totalindexes)。

我希望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 个答案:

答案 0 :(得分: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();
}