2017-03-17 78 views
0

我有db表以這種方式相互關聯: 用戶 - 主目標 - 子目標 - 預算Laravel。嵌套關係。來自外部查詢的條件

用戶有一個MainGoal

MainGoal有許多子目標

子目標有許多預算

預算表有列USER_ID。

所以我的查詢生成器看起來像這樣的某物:

User::with('Maingoal.Subgoals.Budgets'); 

最終,我得到每個子目標預算。但是,我想要爲確切的用戶獲得預算,特別是針對來自第一查詢結果的用戶(User :: with ....)。 這可能嗎?你怎麼看?

感謝您的回答!

+0

用戶有一個maingoal,有有許多子目標一個預算? –

+0

@TomaszRup,不,每個子目標都有很多預算。編輯) – andrew

+0

如果你的'Budgets'表中有'user_id',你不能在用戶'hasMany('App \ Budgets')'上定義嗎?然後調用'$ user-> budgets()'? –

回答

0

爲了讓你給條件渴望負荷,你可以做到這一點

User::with(['Maingoal.Subgoals.Budgets' => function($q) use ($id) { 
    return $q->where('user_id', $id); 
}])->get(); 

其中$ id爲特定用戶的ID

+0

我不知道用戶的ID。當用戶:: with(...) - > get()完成時,我會得到它。但我想在關閉中檢索它。 – andrew

+0

我不知道如何使用預先加載輕鬆實現,因爲在使用where子句之前首先需要一個條件。我認爲你現在可以做的唯一方法是採用id並執行for循環 –