我具有与laravel文档中提到的HasManyThrough关系injector
相同的表结构countries
id - integer
name - string
users
id - integer
country_id - integer
name - string
posts
id - integer
user_id - integer
title - string
并定义与文档中相同的关系。
public function posts()
{
return $this->hasManyThrough(
'App\Post', 'App\User',
'country_id', 'user_id', 'id'
);
}
现在,当我列出特定国家的帖子时。我也需要帖子用户的信息。我的意思是来自数据透视表的信息(用户)
$posts = Country::find(2)->posts();
以上仅返回帖子数据。
答案 0 :(得分:2)
您需要的是急于在帖子旁边加载用户,这可以通过Builder上的with()
方法来实现:
$posts = Country::find(2)->posts()->with('user')->get();
如果您要加载大量数据,并且不希望加载整个User
实例,则甚至可以指定仅从用户表中检索哪些字段:
$posts = Country::find(2)->posts()->with('user:id,name')->get();
然后,您可以简单地使用$post->user->name
或迭代集合时所需的任何东西。
有关更多信息,请参考documentation。
答案 1 :(得分:1)
尝试一下:
$posts = Country::find(2)->posts()->with('user')->get();