Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

phuongphally's avatar

How to select many relationships to single field in Laravel Query Builder.

Hello everyone !

I'm have issue with select result of Query builder.

Four Tables

musics => [id, title, file, image, ............ ]
albums => [id, name, image, ....... ]
singers => [id,name]
music_singer
[id,music_id,singer_id]
return DB::table('musics')
            ->select(
                'musics.id as id',
                'musics.title as title',
                'musics.file as file',
                'musics.image as thumbnail',
                'musics.duration as music_duration',
                DB::Raw('IFNULL( `musics`.`size` , 0 ) as music_size'),
                DB::Raw('IFNULL( `musics`.`view` , 0 ) as music_view'),
                DB::Raw('IFNULL( `musics`.`download` , 0 ) as music_down'),
                'singers.name as singer',
                'albums.name as albums',
                'albums.image as image_album',
                'albums.image as image_thumb'

            )
            ->join('singers', 'singers.id', '=', 'musics.singer_id')
            ->join('albums', 'albums.id', '=', 'musics.album_id')
            ->where('musics.active', true)
            ->whereIn('musics.status', ['renew','published'])
            ->orderByRaw("FIELD(musics.status , 'renew', 'published') ASC")
            ->paginate($number);

I want to get results

Fields => [id, title, singer, ablum]
Values => 

[ 01, title1, singer1-singer2, album1 ],

[ 01, title1,  singer1-singer2,  album1 ],
[ 02, title2,  singer5-singer3,  album1 ],
[ 03, title1,  singer3-singer5,  album1 ],
```

Thank you!


0 likes
2 replies
phuongphally's avatar

@Snapey

Result I want is


[id,  title ,  singer,  ablum]

[ 01, title1, singer1-singer2, album1 ],

[ 01, title1,  singer1-singer2,  album1 ],
[ 02, title2,  singer5-singer3,  album1 ],
[ 03, title1,  singer3-singer5,  album1 ],

My queries above don't work.

Please help me !

Thanks

Please or to participate in this conversation.