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

nicktr's avatar

Query to get related models from DB facade

I'm sure the answer to this is staring me in the face, but I can't figure it out.

I have a basic query to grab some products for the homepage:

$antiques = DB::table('antiques')->latest()->limit(20)->get();

So In my view I can get the antique title using

{{ $antique->title }}

which works fine, however, I need to get the associated images of those antiques, so I can use them in the homepage view. The image paths exist in another table images and are related to the antiques via the `antiques_id' field. Not sure on the query I should be using to get the related images.

0 likes
3 replies
rdelorier's avatar

You can add a join to your query

$antiques = DB::table('antiques')
    ->join('images', 'images.antiques_id', '=', 'antiques.id')
    ->latest()
    ->limit(20)
    ->get(['antiques.*', 'images.path']);

If the relation is one to many then you will also need to group by antiques.id and select the path with group_concat.

Any reason you aren't using eloquent models?

1 like
rdelorier's avatar
Level 9

If you use models then your query gets very simple

Antiques::with('images')->latest()->limit(20)->get();
1 like
nicktr's avatar

Thank you! That was indeed what i needed - I had a feeling it would be simple...

Please or to participate in this conversation.