Laravel 集合 AND WHERE 子句
Laravel collection AND WHERE clause
我对集合中的 AND WHERE 子句有点困惑。
以下查询获取所有拥有汽车驾照或摩托车驾照的用户:
User::whereHas('licences', function($query) {
$query->whereIn('type', ['car', 'motorbike']);
})->get();
现在如何让所有用户都拥有汽车驾照和摩托车驾照?
获取拥有汽车和摩托车的用户的查询应该是这样的
User::whereHas('licences', function($query) {
$query->where('type','car')->where('type','motorbike');
})->get();
尝试复制你的 whereHas:
$wantedLicences= ['car', 'motorbike'];
$query=User::query();
foreach($wantedLicences as $wantedLicence)
{
$query=$query->whereHas('licences', function($query)use($wantedLicence) {
$query->where('type', $wantedLicence);
})
}
假设用户不能拥有超过一种类型的许可证,那么您可以调整 whereHas
以检查相关记录的数量是否等于 2:
User::whereHas('licenses', function ($query) {
$query->whereIn('type', ['car', 'motorbike']);
}, '=', 2)->get();
Laravel 8.x Docs - Eloquent - Relationships - Querying Relationship Existence
我对集合中的 AND WHERE 子句有点困惑。
以下查询获取所有拥有汽车驾照或摩托车驾照的用户:
User::whereHas('licences', function($query) {
$query->whereIn('type', ['car', 'motorbike']);
})->get();
现在如何让所有用户都拥有汽车驾照和摩托车驾照?
获取拥有汽车和摩托车的用户的查询应该是这样的
User::whereHas('licences', function($query) {
$query->where('type','car')->where('type','motorbike');
})->get();
尝试复制你的 whereHas:
$wantedLicences= ['car', 'motorbike'];
$query=User::query();
foreach($wantedLicences as $wantedLicence)
{
$query=$query->whereHas('licences', function($query)use($wantedLicence) {
$query->where('type', $wantedLicence);
})
}
假设用户不能拥有超过一种类型的许可证,那么您可以调整 whereHas
以检查相关记录的数量是否等于 2:
User::whereHas('licenses', function ($query) {
$query->whereIn('type', ['car', 'motorbike']);
}, '=', 2)->get();
Laravel 8.x Docs - Eloquent - Relationships - Querying Relationship Existence