Не могу получить правильную красноречивую ассоциацию по полиморфным отношениям - PullRequest
0 голосов
/ 19 марта 2019

У меня есть ресурсы, к которым применен параметр конфиденциальности. А именно Сообщество и Событие. Я создал отношения morphOne на всех ресурсах, для которых потребуется конфиденциальность, например,

public function privacy(){
    return $this->morphOne('App\Privacy', 'privacy_resource');
}

Я могу запросить настройку конфиденциальности для коллекций, таких как

$profile->events()->with('privacy')->get();

Но когда я пытаюсь сделать это на отдельном ресурсе, вот так

$event->with('privacy')->get();

Вместо этого я получаю коллекцию всех предметов с этого ресурса.

Я понимаю, что, возможно, я неправильно использовал get() здесь, и он фактически получает все события, которые имеют настройку конфиденциальности на них. Есть ли что-то кроме get, которое я должен использовать здесь? Спасибо.

1 Ответ

2 голосов
/ 19 марта 2019

После того, как вы уже получили модель, вы можете использовать load вместо with.

$event->load('privacy');

Это называется Lazy Eager Loading .

В операторе $profile->events()->with('privacy')->get();, с другой стороны, вы еще не получили модели событий из базы данных.,Вот почему вы можете использовать здесь метод with, который добавит соединение к запросу.

...