我正在寻找雄辩的或原始的sql,以获得我的->withCount中两个的和。我需要能够做到这一点而不必->get()记录,它需要使用雄辩的而不是laravels收集方法来实现。
我有以下资料:

$owners = User::active()
     ->where(function($q){
         $q->whereHas('primaryContractOwner')
         ->orWhereHas('primaryVendorOwner');
     })
     ->withCount([
         'primaryContractOwner',
         'primaryVendorOwner'
     ]);

我需要得到primary_contract_owner计数和primary_vendor_owner计数的和。我尝试了以下操作,但找不到primary_contract_owner_count
// This one throws the error
$owners = User::active()
     ->where(function($q){
         $q->whereHas('primaryContractOwner')
         ->orWhereHas('primaryVendorOwner');
     })
     ->withCount([
         'primaryContractOwner',
         'primaryVendorOwner'
     ])
     ->select(['user.*', DB::raw('primary_contract_owner_count + primary_vendor_owner')]);

最佳答案

https://laravel.com/docs/5.7/eloquent-relationships#counting-related-models
我相信你的计数将被称为primaryContractOwner_countprimaryVendorOwner_count。您可以在不检查DB::raw部分的情况下运行查询。

09-18 02:20