Laravel,如何检索具有某些数据透视表值belongsToMany的父记录

时间:2018-03-28 20:51:31

标签: laravel many-to-many has-and-belongs-to-many

如何根据数据透视表中的某些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的用户?

1 个答案:

答案 0 :(得分:1)

  

但是,我如何仅检索其中包含某些stats_id的用户?

使用whereHas条件。

User::whereHas('stats', function ($stats) use ($aFilterWithStatsIDs) {
    $stats->whereIn('id', $aFilterWithStatsIDs);
});