У меня такая же структура таблицы, как указано в документе laravel для отношения HasManyThrough hasManyThrough
countries
id - integer
name - string
users
id - integer
country_id - integer
name - string
posts
id - integer
user_id - integer
title - string
и определите отношение так же, как в doc.
public function posts()
{
return $this->hasManyThrough(
'App\Post', 'App\User',
'country_id', 'user_id', 'id'
);
}
Теперь, когда я перечисляю сообщения конкретной страны. Мне тоже нужна информация о пользователе поста. Я имею в виду информацию из сводной таблицы (пользователи)
$posts = Country::find(2)->posts();
Вышеприведенное возвращает только данные поста.






Что вам нужно, так это загрузить пользователей вместе с сообщениями, это можно сделать с помощью метода with() в Builder:
$posts = Country::find(2)->posts()->with('user')->get();
Если вы загружаете огромные объемы данных и не хотите, чтобы загружался весь экземпляр User, вы даже можете указать, какие поля будут извлекаться только из таблицы пользователей:
$posts = Country::find(2)->posts()->with('user:id,name')->get();
Затем вы можете просто использовать $post->user->name или что-то еще, что вам нужно, при повторении вашей коллекции.
Обратитесь к документация для получения дополнительной информации.
Вам придется определить отношения в модели Post, но я бы сказал, что это стоит затраченных усилий. Вам могут понадобиться отношения и позже, они не устареют, так как они все равно существуют. :)
Спасибо ... Это работает ... Я просто придерживался отношения hasManyThrough, чтобы найти выход. и не думать о других отношениях, чтобы сфотографировать ..
нужна еще одна помощь. это дает мне ошибку. Country::find(2)->posts()->with('user:id,name')->get(); вместо id имя моего столбца id_user
Ну, это был только пример, конечно, вы должны заменить id на user_id, если это соответствует названию вашего столбца.
Попробуй это:
$posts = Country::find(2)->posts()->with('user')->get();
для быстрой загрузки сначала мне нужно определить отношения между публикацией и правом пользователя ...? Или это будет работать с моими текущими отношениями hasManyThrough?