Сумма столбца в выражении where в laravel eloquent - PullRequest
2 голосов
/ 19 апреля 2019

У меня есть модель FamilyMember и модель SubscriptionCharge, в SubscriptionCharge хранится плата за несколько месяцев для каждого члена семьи.Я должен выбрать членов, сумма сборов которых превышает определенную сумму.

$members=FamilyMember::whereHas('subscription_charge', function ($qq) {
   $qq->where(); // how to check sum of column 'amount' in where
})->get();

Как проверить сумму столбца 'сумма' в условии where

Ответы [ 2 ]

1 голос
/ 19 апреля 2019

На основании вашего комментария обновленный ответ

$memeber = FamilyMember::query()
    ->join(DB::raw('("SELECT subscription_charge.family_member_id, SUM(subscription_charge.amount) as total_charges FROM subscription_charge GROUP BY subscription_charge.family_member_id HAVING SUM(subscription_charge.amount) > 
AMOUNT_YOU_WANT") as sub_table'), function($join) {
         $join->on('sub_table.family_member_id', '=', 'family_member.id');
    })->get();

Примечание: не проверено

0 голосов
/ 19 апреля 2019

Я думаю, вы могли бы сделать что-то подобное. (Я в аэропорту, поэтому не могу его проверить.)

$members=FamilyMember->join(DB::raw('(SELECT family_member_id, SUM(amount) AS sum_of_charges 
            FROM subscription_charge
            WHERE family_member_id = x
            GROUP BY family_member_id
//                  (or HAVING family_member_id = x ?)
            ) charges'),
        function($join)
        {
           $join->on('FamilyMember.id', '=', 'charges.family_member_id');
        })
       ->select(                
            'FamilyMember.id',
            'charges.sum_of_charges'
        )
        ->where('sum_of_charges', '>', 'Y')
    })->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...