У меня есть три таблицы во многих отношениях со многими
┌─────────────────┐ ┌─────────────────┐ ┌──────────────────┐
│ users │ │ department_user │ │ departments │
├─────────────────┤ ├─────────────────┤ ├──────────────────┤
| id | | id | | id |
| name | | user_id | | name |
└─────────────────┘ | department_id | └──────────────────┘
| joined_at |
└─────────────────┘
Таблица отделов
1 | department 1
2 | department 2
3 | department 3
Таблица пользователей
1| Mark
2| Jack
Таблица Department_user
Id | user_id | department_id | joined_at
1 | 1 | 1 | 2019-01-01
2 | 2 | 1 | 2019-03-26
3 | 1 | 1 | 2019-04-01
4 | 1 | 3 | 2019-05-01
Модель пользователя:
public function departments()
{
return $this->belongsToMany('App\Department)->withPivot('joined_at');
}
Модель отдела:
public function users()
{
return $this->belongsToMany('App\User')->withPivot('joined_at');
}
DepartmentController:
$department = Department::with(['phones', 'users' => function($query)
{
$query->orderBy('joined_at', 'desc');
}])->get();
return view('dashboard.departments.show', compact('department'));
Show.blade:
<h3>{{ department->name }}</h3><span>{{ $department->users->count() }}</span>
@foreach ($department->users as $user)
<li>
{{ $user-> name }}
{{ $user-> departments->last()->pivot->joined_at }}
</li>
@endforeach
Я хочу перечислить таких пользователей, как этот
Отдел 1
1 users
Jack – joined_at 2019-03-26
Отдел 3
1 users
Mark – joined_at 2019-05-01
Но результат, который я получил,
Отдел 1
3 users
Mark – joined_at 2019-01-01
Jack – joined_at 2019-03-26
Mark – joined_at 2019-04-01
Отдел 3
1 users
Mark – joined_at 2019-05-01
Поэтому я хочу перечислить последних пользователей в определенном отделе и подсчитать их, но игнорировать дубликаты, если пользователь находился в этом отделе в предыдущие даты