Laravel Query. Получить в Eloquent только итоги> 0 - PullRequest
0 голосов
/ 17 июня 2019

У меня есть этот запрос:

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 голосов
/ 18 июля 2019

Наконец этот запрос работает для меня:

      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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...