我沒有測(cè)試過這個(gè),但我會(huì)嘗試類似的東西
Shop::whereIn('owner_id', [123]) ->withCount(['products' => fn($query) => $query->select(['id','type_id'])->whereColumn('products.type_id', '=', 'shops.type_id')]) ->get()
所以我剛剛添加了一些欄位(你需要的欄位和應(yīng)用程式需要識(shí)別產(chǎn)品的欄位),但如果只需要計(jì)數(shù),我會(huì)嘗試不使用ID。
我假設(shè)當(dāng)你取得「products」時(shí),它會(huì)拉取所有數(shù)據(jù),如果有像body/description等「text」類型字段,速度會(huì)很慢。
此外,不確定,但你可以嘗試使用'type_id'而不是'products.type_id',因?yàn)槟阋呀?jīng)在'products'關(guān)係中了。還可以檢查優(yōu)化拉取商店的方式。