Выбор максимального процента скидки от цены ваучера на каждое предложение - PullRequest
0 голосов
/ 14 января 2020

У меня есть две таблицы vouchers и offers.

Поля таблиц предложений: id, title.

Поля таблиц ваучеров id, offer_id, title, original_price, off_price.

Соотношение между таблицами: oneToMany .

Как получить максимальный процент ваучера в каждом предложении?

Ответы [ 2 ]

0 голосов
/ 14 января 2020
protected $appends = ['max_discount_voucher'];
public function getMaxDiscountVoucherAttribute()
{
    return $this->vouchers
        ->select('*', \DB::raw('100 - ( new_price * 100 ) / old_price AS discount_percent'))
        ->orderByDesc('discount_percent')
        ->first();
}
0 голосов
/ 14 января 2020

Использовать accessor будет легко.

В вашей модели предложений:

protected $appends = ['max_discount'];

public function getMaxDiscountAttribute()
{
    return $this->vouchers()
               ->selectRaw('MAX(off_price - original_price) AS max_discount')
               ->first()
               ->max_discount;
}

И вы можете получить предложения с этим атрибутом, например так:

$offers = Offer::where(...)->get(); // return the eloquent.
$offers->first()->max_discount; // return the maximum discount
...