我有一些相关的模型。Auser可以属于许多groups,groups 可以有任意数量的siteCensuses。我想运行一个查询,但将结果限制为仅允许他查看的那些 siteCensus。为此,我必须知道给定id的是否在 auser的siteCensuses 列表中。模型和表格的命名是可预测的。
我试图设置这样的关系:
$user = User::first();
$user->hasManyThrough('App\SiteCensus', 'App\GroupSiteCensus', 'group_id','id',,'sites_census_id')
但没有运气。我尝试的另一件事是:
$user->load('groups.siteCensus')
这确实让我得到了所有siteCensuses 的列表,但我不能轻易地只提取id字段来检查成员资格。
最终,我需要像这样将它插入到模型中:
Class Patient extends Model
{
protected static function boot()
{
parent::boot();
static::addGlobalScope('status', function (Builder $builder) {
$site_census_ids = .......
$builder->where(function (Builder $q) use ($site_census_ids) {
return $q->whereIn('sites_census_id', $site_census_ids);
});
});
}
}
一些相关代码如下:
class Group extends Model
{
public function users()
{
return $this->belongsToMany("App\User");
}
public function siteCensus()
{
return $this->belongsToMany("App\SiteCensus", 'group_site_census', 'group_id', 'sites_census_id');
}
}
class User extends Model
{
public function groups()
{
return $this->belongsToMany('App\Group');
}
}
class SiteCensus extends Model
{
public function groups()
{
return $this->belongsToMany("App\Group");
}
}
宝慕林4294392
慕尼黑5688855