Laravel Eloquent - условно активные отношения загрузки, основанные на поле родительской таблицы. - PullRequest
1 голос
/ 04 ноября 2019

Laravel 5.8

Это мои таблицы:

# Property
-id
-type[featured,standard]
-and others fields

# Meta
-id
-property_id
-and others fields

Я уже установил красноречивое отношение (hasOne). И я пытаюсь добиться условной загрузки мета-отношения только длясвойства, которые имеют type = "featured".

1 Ответ

0 голосов
/ 04 ноября 2019

Если вы запускаете запрос, используя Свойство Модель

Property::with('meta')->where('type','featured')->get();

И если вы запускаете запрос от имени Мета-модель .

ВВ этом запросе вы получите метас, у которого property тип имеет featured

Meta::whereHas('property', function($q){
    $q->where('type','featured');
})

Редактировать: Ваш ответ верный, но что если я хочу, чтобы все свойства были одинаковыми? и стандартный с мета для избранных.

Вы хотите получить все Property с meta, чем этот запрос вернет Property с meta;

Property::with('meta')->get();

Вам нужноиспользовать для этого нетерпеливую загрузку .

    $properties= Property::all();;
    $properties->where('type','featured')->load('meta');
    dd($properties);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...