• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Laravel, obliczenie w kontrolerze przed dodaniem do bazy

Object Storage Arubacloud
0 głosów
196 wizyt
pytanie zadane 9 lutego 2018 w PHP przez mi-20 Stary wyjadacz (13,190 p.)

Witam, jak w Laravelu, przed dodaniem do bazy zrobić małe obliczenie

Mam taki uproszczony kod:

public function store( BuyRequest $request){
        $buy = new Buy;
        $buy -> id_user = $request -> id_user;
        $buy -> id_product = $request -> id_product;
        $buy -> title = $request -> title;
        $buy -> price = $request -> price;
        $buy -> shipp = $request -> shipp;
        $buy -> total_price = ....
        $buy -> save();
        return redirect(url('bought', $buy -> id));
    }

W do kolumny total_price chcę dodać cenę która będzie  wynikiem iloczynu ceny i ilości + wysyłkę

ilość * price + shipp

Jak można to osiągnąć?

 

1 odpowiedź

0 głosów
odpowiedź 28 listopada 2020 przez mtk3d Nałogowiec (46,690 p.)

Możesz to zwyczajnie obliczyć:

$buy->total_price = ($request->amount * $request->price) + $request->shipp;

Ew. jeśli twój obiekt buy zawiera wszystkie potrzebne pola, to możesz albo obliczać tę cenę w locie przy odczycie:

class Buy extends Model
{
    //...
    public function getTotalPriceAttribute()
    {
        return ($this->amount * $this->price) + $this->shipp;
    }
}

Jeśli jednak jakieś obliczenia będą zbyt wolne żeby przeliczać je za każdym razem przy odczycie, to można je wrzucić do bazy i wtedy będą przeliczane tylko na modyfikacji. Podaję przykład, ale prawdopodobnie tutaj jest to tak proste obliczenie, że będzie to zbyt skomplikowane rozwiązanie:

class Buy extends Model
{
    //...
    private function recalculateTotal(): void
    {
        $this->total_price = ($this->amount * $this->price) + $this->shipp;
    }

    public function setAmountAttribute($value)
    {
        $this->attributes['amount'] = $value;
        $this->recalculateTotal();
    }

    public function setPriceAttribute($value)
    {
        $this->attributes['price'] = $value;
        $this->recalculateTotal();
    }

    public function setShippAttribute($value)
    {
        $this->attributes['shipp'] = $value;
        $this->recalculateTotal();
    }
}

 

komentarz 30 listopada 2020 przez mi-20 Stary wyjadacz (13,190 p.)
Co prawda odpowiedź trochę po czasie ale i tak dzięki :D przynajmniej można sobie przypomnieć swój stary kod :D
komentarz 2 grudnia 2020 przez mtk3d Nałogowiec (46,690 p.)
Haha, faktycznie już trochę minęło, czasem nie zwracam uwagi. Może ktoś skorzysta :D

Podobne pytania

0 głosów
1 odpowiedź 186 wizyt
pytanie zadane 8 stycznia 2018 w PHP przez mi-20 Stary wyjadacz (13,190 p.)
0 głosów
1 odpowiedź 628 wizyt
pytanie zadane 10 grudnia 2017 w PHP przez mi-20 Stary wyjadacz (13,190 p.)
0 głosów
0 odpowiedzi 136 wizyt
pytanie zadane 13 lutego 2018 w PHP przez mi-20 Stary wyjadacz (13,190 p.)

92,556 zapytań

141,404 odpowiedzi

319,560 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...