NewbieCoder
NewbieCoder

Reputation: 706

Laravel Eloquent with() selecting specific column doesn't return results

Say I have 2 models, Category and POI where 1 Category can have many POIs.

$categoryDetails = Category::with([
    'pois' => function ($query) {
        $query->where('is_poi_enabled', true);
    },
])->findOrFail($id);

The above query returns results from the specific Category as well as its POIs.

However, with the query below:

$query->select('id', 'name')->where('is_poi_enabled', true);

The POIs become empty in the collection.

Any idea why this is happening? When added a select clause to the Eloquent ORM?

Upvotes: 1

Views: 100

Answers (1)

Gautam Patadiya
Gautam Patadiya

Reputation: 1412

While doing a select it's required to fetch the Relationship local or Primary key. For an example POIs table contains category_id then it's required to select it Try this:

$categoryDetails = Category::with([
    'pois' => function ($query) {
        $query->select(['id', 'category_id', 'is_poi_enabled'])
       ->where('is_poi_enabled', true);
    },
])->findOrFail($id);

Good luck!

Upvotes: 2

Related Questions