Мне нужно посчитать количество изображений из каждого альбома - PullRequest
0 голосов
/ 29 апреля 2019

Мне нужно показать количество изображений, которые есть у каждого пользователя в каждом альбоме.Для этого я предполагаю, что мне нужно другое соединение или подзапрос, но я не могу достичь желаемого результата.

$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();

Структура базы данных:

1 Ответ

0 голосов
/ 29 апреля 2019

Если вы используете Eloquent и Models, вы можете довольно легко сделать это, используя ->count().

Без Eloquent вы можете посмотреть на что-то вроде этого:

(Это явно не ТОЧНО то, что вам нужно, но оно должно направить вас по правильному пути)

$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() - это еще один метод Eloquent, который вы не должны упускать из виду:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...