我有三个模型:
用户:
public function projects()
{
return $this->hasMany('StoredFile', 'user_id', 'id')->with('files');
}
存储文件:
public function files()
{
return $this->hasMany('File', 'hash', 'user_hash');
}
以及没有关联方法的文件模型
问题:
我使用以下代码来获取项目和每个项目存储的文件:
$projects = $user->projects;
var_dump(json_encode($projects))
// {"project_name":"test","user_hash":"64650458b6Fhgd68ca57308222","files":[{"id":1,"name":"example.pdf"}]}
我可以使用 count($projects[0]->files) 来获取文件计数
但是这个$projects变量需要通过Response::json返回到客户端
return Response::json($project);
并且我不能将文件泄露给访问者,我想修改 StoredFile 模型以仅返回文件计数
就像:
return $this->hasMany('File', 'hash', 'user_hash')->count();
但这会给我一个错误:
在非对象上调用成员函数addEagerConstraints()”
如何接收关系中的计数值?
请帮忙!谢谢
最佳答案
@Warren Moore 几乎是正确的,但我刚刚找到了一个更好的解决方案:
protected $appends = array('file_count');
public function getFileCountAttribute()
{
return $this->files->count()
}
这会将 file_count
属性附加到每个文件对象
关于php - Laravel 多模型关系返回计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25437257/