У меня есть вопрос о доступе к связи в модели Laravel. У меня есть модель категории, которая имеет отношение к модели перевода и модели категории (та же самая модель / сама - одна категория может отображаться в других категориях с помощью сводной таблицы CategoryToCategory):
модель категории:
public function childCategories(){
return $this->hasManyThrough('App\Models\Category',
'App\Models\CategoryToCategory',
'id_parent_category',
'id',
'id',
'id_category');
}
public function translation($locale = null)
{
if ($locale == null) {
$locale = \App::getLocale();
}
return $this->hasOne('App\Models\CategoryLanguage', 'id_category', 'id')->where('locale', '=', $locale);
}
Теперь я беру текущую категорию + перевод + дочерние категории:
$category = Category::with('translation', 'childCategories')->active()->where('id', $id)->first();
И отобразить все дочерние имена:
@forelse($category->childCategories as $category)
{{ $category->translation->name }}
@endforelse
Я работаю , но каждая дочерняя категория делает другой запрос для получения перевода (он не загружен для элементов в forelse). Так как же загрузить отношение «перевод» в модель категории, которая является предустановленным загруженным отношением?
Я мог бы запросить модель CategoryToCategory, чтобы получить все дочерние категории + загрузить перевод для этой модели и результат был бы таким же:
$categories = CategoryToCategory::with('translation')->where('id_parent_category', $id)->get();
И будет один запрос на перевод. Тем не менее мне любопытно использовать первое решение вместо запроса categoryToCategory.
Есть идеи?
Хорошего дня!