php - Laravel 多模型关系返回计数

标签 php database laravel orm relational-database

我有三个模型:

用户:

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/

相关文章:

php - 使用内部联接时php中的bind_param错误

php - mysql_real_escape_string() 说用户访问被拒绝 'drrifae' @'localhost'

php - 像 ñ á é í ó ú 这样的特殊字符会作为 ??? 导入。在MySQL中

带有 where 子句的 mysqldump 使用参照完整性

laravel - 工匠返回空白

laravel - 通过另一个(外部)Laravel 项目使用 Laravel API

php - 检索数据时,由于符号 "' ",部分数据不会出现

sql - 我应该在多对多 "link"表中使用索引列吗?

java - 我应该如何制作一个简单的姓名数据库?

php - 变量未传递到过滤器