我在用户和位置之间有很多关系。我想过滤“附加用户”选择列表,以仅显示其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);
}
答案 0 :(得分:2)
您可以从请求中检索目标delivery_method: :smtp
smtp_settings:
address: smtp.zoho.com
port: 587
authentication: :plain
domain: smtp.zoho.com
user_name: "you@mail.com"
password: "xxxx"
enable_starttls_auto: true
,如下所示。
Location
答案 1 :(得分:0)
因此,您的locations
和users
表都具有一个company_id
字段,并且您想要提取一个与您的位置具有相同company_id
的用户的列表正在努力。这可以通过过滤现有的关系方法来完成:
<?php
class Location extends Model
{
public function relatableUsers()
{
return $this->users()->where("company_id", $this->company_id)->get();
}
}
请注意,我打的是$this->users()
,而不是$this->users
。这将返回一个查询构建器实例,您可以在与数据库对话之前对其进行更改,而不是拉动所有用户并在PHP端对集合进行排序。现在,您可以在Location
模型的实例上调用它:
<?php
$loc = Location::find($id);
$users = $loc->relatableUsers();