我有一個問題..在我的程序中,我需要一個集合User,另一個集合,其中包含用戶參與的所有項目以及hours他在每個項目中工作的數量。我有 3 個表來解決這個問題:users 表,很簡單的搭配。projects 桌子。time_entries,與user_id和project_id。Aproject可以有很多time_entries和userto。我已經測試過了,但它不起作用:$users = User::join('time_entries', 'users.id', '=', 'time_entries.user_id') ->whereBetween('spent_on', [($request->input('debut')), ($request->input('fin'))]) ->join('projects', 'time_entries.project_id', '=', 'projects.id') ->selectRaw('user_id , project_id, sum(hours) as sum') ->get();
1 回答

墨色風雨
TA貢獻1853條經驗 獲得超6個贊
您可以使用Laravel Eloquent定義/模型之間的多對多關系:UserProject
/** User.php */
public function projects()
{
return $this
->belongsToMany(Project::class, 'time_entries')
->withPivot('hours');
}
——
/** Project.php */
public function users()
{
return $this
->belongsToMany(User::class, 'time_entries')
->withPivot('hours');
}
然后只需訪問關系:
/** UserController.php */
public function myFunction()
{
$users = User::with('projects')->get();
// this $users collection will have another collection inside (projects).
$projects_of_first_user = $users->first()->projects;
}
- 1 回答
- 0 關注
- 143 瀏覽
添加回答
舉報
0/150
提交
取消