У меня есть много-много отношений между пользователями и местоположениями. Я хочу отфильтровать список выбора «присоединить пользователя», чтобы показывать только пользователей, чья company_id
соответствует company_id
местоположения, в котором я сейчас нахожусь. Я создал статическую функцию с именем relatableUsers
, которая добавляет в запрос предложение «where».
public static function relatableUsers(NovaRequest $request, $query)
{
return $query->where('company_id', ???);
}
Как вытащить текущее местоположение company_id
в этот запрос? Если я жестко кодирую company_id
, как показано ниже, фильтр работает, поэтому я знаю, что это возможно.
public static function relatableUsers(NovaRequest $request, $query)
{
return $query->where('company_id', 'FA624E60-DD37-11E8-A540-C3C0A709EE15');
}
Информация о записи не сохраняется в $request
или $query
.
РЕДАКТИРОВАТЬ - добавление отношений
Модель пользователя:
public function company()
{
return $this->belongsTo(Company::class);
}
public function locations()
{
return $this->belongstoMany(Location::class);
}
Модель местоположения:
public function company()
{
return $this->belongsTo(Company::class);
}
public function users()
{
return $this->belongstoMany(User::class);
}
Отношения модели компании:
public function users()
{
return $this->hasMany(User::class);
}
public function location()
{
return $this->hasMany(Location::class);
}