Есть много способов достичь этой цели.Я покажу вам пример использования областей запросов .
. В вашем классе User
вам нужно сделать небольшое обновление:
class User extends Model
{
protected $table = 'user';
public function groups()
{
return $this->belongsToMany(Group::class, 'user_group')
//->withPivot('valid_before'); <-- Remove this
}
}
и создать область видимости.в вашей Group
модели:
class Group extends Model
{
protected $table = 'group';
public $timestamps = false;
public function user()
{
return $this->belongsToMany(User::class, 'user_group');
}
/**
* This scope gets as input the date you want to query and returns the users collection
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param string $date
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeUsersValidBefore($query, $date)
{
return $query->users()->wherePivot('valid_before', '<', $date);
}
}
Теперь я представляю, что у вас есть GroupController
, который где-то создает запрос для получения , действительного до пользователей.Что-то вроде:
// [...]
$users = Group::usersValidBefore($yourDate)->get();
// [...]
Если вы хотите создать запрос с другой стороны, я имею в виду, что вы хотите использовать модель User и перечислить всех пользователей, имеющих отношение с опорным числом с заполнением valid_before
, чемправильный подход - создание промежуточной модели UserGroup
, которую можно легко использовать для создания запроса.