Laravel查询。仅以口才获得总计> 0

时间:2019-06-17 16:32:08

标签: sql laravel eloquent

我有这个查询:

public static function totalByAgent(int $agentId)
{
    return PropertyListing::select(
        DB::raw('SUM(property_listing.rental) as rental'),
        DB::raw('SUM(property_listing.sale) as sale'),
        'property_category.name as category_name',
        'property_category.id as category_id'
    )->join(
        'property_category',
        'property_category.id',
        'property_listing.category_id'
    )->where('agent_id', $agentId)->groupBy('property_category.id')->get();
}

通过此查询,我可以按物业类别获取要出售的物业总和和要出租的物业总和。但是,如果某些物业仅具有待售物业,而要出租的房屋为0,则我获得的租金总额为0。

我尝试添加:

->having('sale', '>', 0)->get()

在groupBy之后。如果有的话,这会掩盖租金。

有什么主意吗?

最诚挚的问候

1 个答案:

答案 0 :(得分:0)

最后,该查询对我有用:

      return Property::published()->select(DB::raw('SUM(property.rental) as rental'),
                                    DB::raw('SUM(property.sale) as sale'),
                                    'property_category.name as category_name',
                                    'property_category.id as category_id')
          ->join('property_category', 'property_category.id', 'property.category_id')
          ->whereExists(function ($query) use ($agentId){
                      $query->select('property_listing.agent_id')
                            ->from('property_listing')
                            ->whereRaw('property.id = property_listing.property_id')
                            ->where('property_listing.agent_id', $agentId);
                            })->published()
         ->groupBy('property_category.id')->get();