Eloquent 如果至少有一个关系,则获取集合
Eloquent Get Collection if it has at least one relation
我有一个场景,我有一个模型 A,它有 3 个关系 B、C 和 D。
我正在尝试在 A 中获取至少有一个关系的集合
所以我不想要 {id:1,B:[],C;[],D:[]} 但我会接受 {id:2,B:[{id:6}],C;[], D:[]}
我试着在 3 个之前得到它们,但只有当它有 3 个时才得到它。
我也尝试通过 if 获取所有内容然后进行检查,但我想要一种更快的方法。
你可以使用 orWhereHas
$collectionA = A::where(function($query) {
$query->whereHas('B')
->orWhereHas('C')
->orWhereHas('D');
})
->get();
我有一个场景,我有一个模型 A,它有 3 个关系 B、C 和 D。 我正在尝试在 A 中获取至少有一个关系的集合 所以我不想要 {id:1,B:[],C;[],D:[]} 但我会接受 {id:2,B:[{id:6}],C;[], D:[]} 我试着在 3 个之前得到它们,但只有当它有 3 个时才得到它。 我也尝试通过 if 获取所有内容然后进行检查,但我想要一种更快的方法。
你可以使用 orWhereHas
$collectionA = A::where(function($query) {
$query->whereHas('B')
->orWhereHas('C')
->orWhereHas('D');
})
->get();