如何在 whereHas laravel 中使用 groupBy

How To Use groupBy in whereHas laravel

我在我的项目中使用 Metable 为订单创建元数据
但我有一个问题
我想要具有相同电子邮件的团体订单
这是我table table 图片:image 1 image 2

我需要这样的代码才能工作:)

Order::whereHas( 'meta', function($query) {
        $query->where("key" , "gmail");
})->groupBy('meta.value')->get();

这是订单模型中特征'use Metable'调用的元关系:

public function meta(): MorphMany
{
    return $this->morphMany($this->getMetaClassName(), 'metable');
}

谢谢

这个查询可能有效,我们从元模型开始查询:

Meta::with('metable')
    ->whereHasMorph('metable', Order::class)
    ->where('key', 'gmail')
    ->get()
    ->groupBy('value')
    ->map(function ($metaCollection) {
        return $metaCollection->map->metable->unique('id');
    });

这是未经测试的,但我会尝试从订单 class:

中检索模型
Order::whereHas('meta', function($query) {
    $query->where('key', 'gmail');
})->with(['meta' => function($query) {
    $query->groupBy('value')
}])->get();

试试这个解决方案:

Order::whereHas( 'meta', function($query) {
    $query->where("key" , "gmail")
    $query->groupBy('meta.value');
})->get();