2016-05-17 95 views
0

我知道,我们可以在控制器中做到这一点:Laravel雄辩:从内部函数获取当前ID

User::with('post')->get(); 

它会从数据库中获取每个用户的帖子,根据users.id。 但问题是,我想这样做:

User::with(['post' => function($query) { 
    # Throw users.id here... 
}])->get(); 

如何做到这一点?

+0

您无法在此处获取用户ID的值。那是因为你还没有执行你的查询,所以PHP还没有收到数据。 – Hkan

+0

@Hkan我可以使用什么替代方案?我可以把函数放在get()中吗? – Mdkusuma

+0

为什么你需要该功能中的ID? – Hkan

回答

0

您应该首先获取用户,然后使用单独的查询加载相关帖子并手动合并它们。

$users = User::get(); 

$posts = Post::whereIn('user_id', $users->pluck('id'))->get(); // Get your additional data in this query 

$users->each(function ($user) use ($posts) 
{ 
    $user->posts = $posts->where('user_id', $user->id); 
}); 

注:我没有测试上面的代码。这只是一个例子,向你展示如何完成你正在尝试做的事情。