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()' –