我正在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();
}
}
答案 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();
}