Как рассчитать сумму заказа, умножив цену товара на его количество, используя laravel API? - PullRequest
0 голосов
/ 05 января 2020

Я отправляю запрос по почте, используя должность почтальона (в качестве теста), который содержит следующий формат json:

{

    "place_id": 2,

    "items": [
        {
            "id": 9,
            "quantity": 5
        },
        {
            "id": 8,
            "quantity": 3
        },
           {
            "id": 5,
            "quantity": 2
        }
    ]

}

Теперь, прежде чем клиент подтвердит свой заказ, мне нужно сделать несколько расчеты. У каждого товара есть своя цена, и я хочу рассчитать общее количество каждого товара (цена * количество), но я немного запутался, как это сделать.

Это мой код (попытка). он дал мне сумму цен, но не мог понять, как рассчитать каждый пункт (цена * количество):

     $items = $request->input('items',[]);

       $item_array = [];

        foreach ($items as $key=>$item)
        {
            $item_array[$key] = $item['id'];
        }

        $itemsPriceTotal = Item::whereIN('id',$item_array)->sum('price');
        $itemsPriceTotal =(int)($itemsPriceTotal);

Ответы [ 2 ]

3 голосов
/ 05 января 2020
$reqItems = $request->input('items');

// associative array of item ids and their respective quantities
$itemIdsQtys = [];

foreach($reqItems as $reqItem) {
  $itemIdsQtys[$reqItem['id']] = $reqItem['quantity'];
}

// get array of item ids and fetch their respective models
$ids = array_keys($itemIdsQtys);
$itemModels = Item::find($ids);

// calculate total
$priceTotal = 0;
foreach($itemModels as $model) {
  $subtotal = $model->price * $itemIdsQtys[$model->id];
  $priceTotal += $subtotal;
}

return $priceTotal;
0 голосов
/ 06 января 2020

Я бы использовал модель мутаторов.

См. https://laravel.com/docs/5.8/eloquent-mutators:

/**
 * Get the user's full name.
 *
 * @return string
 */
public function getTotalCost()
{
    // Example: $qty = SomeModel::Find()->where(['id' =. $this->id])->one()

    return $this->qty * $this->price;
}

Затем используйте $model->totalCost

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...