我在用户和图片之间有很多关系。
用户模型
public function image()
{
return $this->belongsToMany('\App\Image');
}
图像模型
public function user()
{
return $this->belongsToMany('\App\User');
}
表
用户
id | name
图像
id | url
image_user
id | image_id | user_id
当用户“收藏”图像时,它存储在数据透视表中。
id | image_id | user_id
1 1 1
2 2 1
3 1 2
我需要计算每张图片的最爱。
我试着像:
Image::with('user')->find(1)->count();
但这会计算用户数量,而不是收藏数量。
理想情况下,我想返回所有图像数据以及用户数据的计数 - 我该怎么做?
答案 0 :(得分:0)
你可以这样做:
$image = Image::with('user')->find(1) // Get the image with user eager loading
$image->name; // Access any attribute
$image->users->count(); // Get the user count
您甚至可以在Image模型中添加几行来创建一个" custom"属性:
public function getFavoritesAttribute()
{
return count($this->users);
}
然后像这样使用它:
$image->favourites;
这里有一个更详细的解决方案: Laravel many to many loading related models with count