Laravel красноречиво при () выборе указанного столбца c не возвращает результаты - PullRequest
1 голос
/ 30 марта 2020

Скажем, у меня есть 2 модели, Категория и POI, где 1 Категория может иметь много POI.

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

Приведенный выше запрос возвращает результаты из указанной c Категории, а также ее POI.

Однако с помощью запроса ниже:

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

POI становятся пустыми в коллекции.

Есть идеи, почему это происходит? Когда добавлено предложение select в Eloquent ORM?

Ответы [ 2 ]

2 голосов
/ 30 марта 2020

При выполнении выбора требуется получить локальный или первичный ключ Отношения. Для примера таблица POI содержит category_id, тогда необходимо выбрать его. Попробуйте это:

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

Удачи!

0 голосов
/ 30 марта 2020

Вы можете попробовать это

$categoryDetails = Category::with([
    'pois' => function ($query) {
        $query->select(['id','is_poi_enabled'])
       ->where('is_poi_enabled', true);
    },
])->findOrFail($id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...