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

AlenV's avatar
Level 1

Make one query to go through all tables

Is there a way I could connect this two queries? I need to get category under every meal.

public function scopeMyMeals($query, $language){
        $mealPivot = $this->meals()->getTable();
        $categoryPivot = $this->categories()->getTable();

        $query = $query->whereHas('meals', function($q) use ($language, $mealPivot) {
            $q->where('code', $language);
        });

        $query = $query->whereHas('categories', function($q) use ($language, $categoryPivot) {
            $q->where('code', $language);
        });
        

        return $query->with('meals', 'categories');
    }
0 likes
1 reply
rawilk's avatar
rawilk
Best Answer
Level 47
public function scopeMyMeals($query, $language)
{
    return $query->whereHas('meals', function ($query) use ($language) {
        return $query->where('code', $language);
    })
    ->whereHas('categories', function ($query) use ($language) {
        return $query->where('code', $language);
    })
    ->with(['meals', 'categories']);
}

That should simplify the query a little..

2 likes

Please or to participate in this conversation.