如何根据数据透视表中的某些ID检索模型的所有记录?
我有以下3个表
用户; ID, 名称
统计信息; ID, 名称
stats_selected; 用户身份, stats_id
模型
user.php的
public function stats()
{
return $this->belongsToMany('App\stats', 'stats_selected', 'user_id', 'stats_id')->withTimestamps();
}
控制器
// Get all users with example of stats ID's
$aFilterWithStatsIDs = [1,10,13];
$oUser = User::with(['stats' => function ($query) use($aFilterWithStatsIDs ) {
$query->whereIn('stats_id', $aFilterWithStatsIDs);
}])
->orderBy('name', 'desc')
->get()
这只输出所有用户。顺便说一句,用这些统计信息获取用户并将这些选定的统计数据保存到数据库中不是问题。这与上面的行完全一致。
但是,如何检索仅在其中包含某些stats_id的用户?
答案 0 :(得分:1)
但是,我如何仅检索其中包含某些stats_id的用户?
使用whereHas
条件。
User::whereHas('stats', function ($stats) use ($aFilterWithStatsIDs) {
$stats->whereIn('id', $aFilterWithStatsIDs);
});