【发布时间】:2019-04-10 08:30:09
【问题描述】:
我在用户和位置之间有多对多的关系。我想过滤我的“附加用户”选择列表以仅显示company_id 与我当前所在位置的company_id 匹配的用户。我创建了一个名为relatableUsers 的静态函数,它在查询中添加了一个“where”子句。
public static function relatableUsers(NovaRequest $request, $query)
{
return $query->where('company_id', ???);
}
如何将当前位置的company_id 拉入此 where 查询?如果我像下面的过滤器那样硬编码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);
}
【问题讨论】:
-
静态函数可能不知道“当前”对象。为什么不在函数中添加另一个参数?
-
如果您添加关系的详细信息,有人可能会以
hasManyThrough关系的形式为您提供帮助。 -
@miken32 我已经添加了关系,谢谢
-
Company模型怎么样?它与这两种其他模型有何关系? -
@miken32 将公司关系添加到用户和位置
标签: php laravel laravel-nova