2016-05-17 67 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); 
}); 

注:我沒有測試上面的代碼。這只是一個例子,向你展示如何完成你正在嘗試做的事情。