Laravel,如何检索具有某些 Pivot table 值的父记录 belongsToMany
Laravel, How to retrieve parent records with certain Pivot table values belongsToMany
如何根据数据透视表中的某些 ID 检索模型的所有记录 table?
我有以下3个tables
用户;
ID,
名字
统计;
ID,
名字
stats_selected;
user_id,
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的用户?
But how do I retrieve only the users which has certain stats_id's within them?
使用 whereHas
条件。
User::whereHas('stats', function ($stats) use ($aFilterWithStatsIDs) {
$stats->whereIn('id', $aFilterWithStatsIDs);
});
如何根据数据透视表中的某些 ID 检索模型的所有记录 table?
我有以下3个tables
用户; ID, 名字
统计; ID, 名字
stats_selected; user_id, 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的用户?
But how do I retrieve only the users which has certain stats_id's within them?
使用 whereHas
条件。
User::whereHas('stats', function ($stats) use ($aFilterWithStatsIDs) {
$stats->whereIn('id', $aFilterWithStatsIDs);
});