Я разработал веб-сайт электронной коммерции, используя Laravel, и теперь я пытаюсь обновить корзину, указав десятичное количество, но оно автоматически округляет его до ближайшего числа при вызове функции обновления.
количество товаров может быть в «кг» и может быть 1,0, 1,25, 1,50 и т. д.
PS: Я использую Laravel DarrylDecode Поставщик услуг корзины
Вот код функции обновления корзины, которую я написал и отлично работает для недесятичных количественных чисел:
public function update(Request $request)
{
$row = count($request->id);
for ($i = 0; $i < $row; $i++) {
Cart::update($request->id[$i], [
'quantity' => array(
'relative' => false,
'value' => $request->quantity[$i],
),
]);
}
}
Вот код функции обновления предоставленный Darryldecode. Я нашел его по следующему пути: Vendor / darryldecode / Cart / Cart. php
public function update($id, $data)
{
if ($this->fireEvent('updating', $data) === false) {
return false;
}
$cart = $this->getContent();
$item = $cart->pull($id);
foreach ($data as $key => $value) {
// if the key is currently "quantity" we will need to check if an arithmetic
// symbol is present so we can decide if the update of quantity is being added
// or being reduced.
if ($key == 'quantity') {
// we will check if quantity value provided is array,
// if it is, we will need to check if a key "relative" is set
// and we will evaluate its value if true or false,
// this tells us how to treat the quantity value if it should be updated
// relatively to its current quantity value or just totally replace the value
if (is_array($value)) {
if (isset($value['relative'])) {
if ((bool)$value['relative']) {
$item = $this->updateQuantityRelative($item, $key, $value['value']);
} else {
$item = $this->updateQuantityNotRelative($item, $key, $value['value']);
}
}
} else {
$item = $this->updateQuantityRelative($item, $key, $value);
}
} elseif ($key == 'attributes') {
$item[$key] = new ItemAttributeCollection($value);
} else {
$item[$key] = $value;
}
}
$cart->put($id, $item);
$this->save($cart);
$this->fireEvent('updated', $item);
return true;
}