2
假设我有一个User
模型和一个Post
模型。查询一对多关系集合
class Post extends Eloquent
{
}
有许多用户,每个User
有许多Post
。全部Post
属于User
。
class User extends Eloquent
{
public function posts()
{
return $this->hasMany('Post');
}
}
我知道我能得到一个User
与find()
。
$user = User::find(1);
我知道,从一个单一的User
,我可以得到所有他们posts()
。
$posts = User::find(1)->posts;
但是,现在假设我有多个用户。
$users = User::all();
我想访问这个用户集合的所有帖子。东西沿线
$posts = User::all()->posts;
这当然是行不通的。然而,从理论上讲,它应该是功能上等同于
$posts = Post::all()
有没有办法做到在Laravel 4.2与上述类似的东西吗?
我不想使用Post::all()
。原因是它不会是我想要的更复杂的示例,其中涉及对User
的限制。
$postsByMaleUsers = User::where('gender', '=', 'male')->posts;
应该获得男性用户发布的所有帖子。
我也知道,我可以简单地使用foreach
循环。
foreach($users->posts as $post)
{
// Process result here.
}
但是,假设我试图返回结果而不是处理结果。例如,我可以在User
模型中使用public static function postsByMaleUsers()
,并且调用User::postsByMaleUsers()
应仅返回男性用户的帖子集合。在这种情况下,foreach
循环将不适合我。
您好,感谢的解决方案,但不幸的是,它看起来像'pluck'未在Laravel 4.2实现。在4.2版本中是否有任何等价的方法,或者如果没有升级到5,我是否运气不佳? – Zsw
@Zsw - 'lists()' –