我需要显示用户的每个相册的图像数量。为此,我假设我需要另一个联接或子查询,但是我无法获得想要的结果。
$userId = auth()->user()->id;
$albums = DB::table('users_albums')
->join('albums', 'users_albums.albumId', '=', 'albums.id')
->where('users_albums.userId', $userId)
->select('albums.name',
'albums.owner',
'albums.id',
'albums.created_at')
->get();
数据库结构:
编辑:添加了以下代码,它可以正常工作。现在的问题是性能,但主要问题已解决!
DB::raw('(SELECT
COUNT(I.id)
FROM
images I
WHERE
I.albumId = albums.id) as numberOfImages')
答案 0 :(得分:0)
如果您使用的是Eloquent和Models,则可以使用->count()
轻松地做到这一点。
如果没有口才,您可以按照以下方式进行调查:
(这些显然不是您所需要的,但应该引导您走正确的路)
$album = DB::table('albums')->first();
$image_count = DB::table('images')->where('album_id', $album->id)->count();
更多“雄辩”的方式:
// Album model:
public function images()
{
return $this->hasMany('App\Image');
}
public function getImageCount()
{
return $this->images->count();
}
// Controller
$first_album = auth()->user()->albums->first();
$album_image_count = $first_album->getImageCount();
hasManyThrough()
是您不应该忽略的另一种口才:)