我有这些模型
机:
->id
->...
服务器
->id
->machine_id
->is_suspended
与机器模型的关系:
public function servers()
{
return $this->hasMany('App\Server');
}
//with suspended servers
public function getFreePortsAmountAllAttribute()
{
return $this->servers->count();
}
//without suspended servers
public function getFreePortsAmountAttribute()
{
return $this->servers->where('servers.is_suspended', false)->count();
}
使用此关系,当我创建2台服务器(1台已挂起,1台未挂起)并调用时:
dd(Machine::find(1)->free_ports_amount);
返回0,因此由于某种原因,访问器不起作用。知道为什么吗?
最佳答案
您正在调用“服务器”访问器而不是查询生成器“ servers()”,请尝试以下更改:
//with suspended servers
public function getFreePortsAmountAllAttribute()
{
return $this->servers()->count();
}
//without suspended servers
public function getFreePortsAmountAttribute()
{
return $this->servers()->where('is_suspended', false)->count();
}