[英]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.