簡體   English   中英

如何在 whereHas laravel 中使用 groupBy

[英]How To Use groupBy in whereHas laravel

我在我的項目中使用Metable為訂單創建元數據
但我有一個問題
我想要具有相同電子郵件的組訂單
這是 metable 表圖像:圖像 1圖像 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 模型開始查詢:

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

這是未經測試的,但我會嘗試從 Order 類中檢索模型:

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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM