Laravel: Получить список предметов и СУММ - PullRequest
0 голосов
/ 02 июля 2019

Трудно задать вопрос!Ну, у меня есть этот объект из $ request:

{
"_method": "POST",
"_token": null,
"cliente": "1",
"cota": "853",
"grupo": "07384",
"idERP": "1",
"novoSegmento": "3",
"nrocpfCnpj": "00635344000177",
"natureza_juridica": "206-2 - Sociedade Empresária Limitada",
"porte": "MICRO EMPRESA",
"originalSegmento": "7",
"example_length": "10",
"cota853": "12975",
"cota209": "12110"
}

Я должен суммировать значения из кота ***, и это довольно сложно сделать.Сначала я искал слово 'cota' в этом $ результате, используя:

if (strpos($request, 'cota') !== false) {
            return 'true';
        }

С этого момента я не могу понять, как продолжить: 1-) Получить сколько "cota"?2-) Как заставить каждое значение составить сумму?

Есть идеи?Это лучший способ?Надеюсь, я дал понять.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 02 июля 2019

Если вы передаете это, используя форму, вы можете лучше создать массив из cotas и затем суммировать их, используя мощную коллекцию в laravel, например:

// in your blade

<input name="cota[]" value="100" />
<input name="cota[]" value="200" />

// in the controller

$total = collect($request->get('cota'))->sum();

или выполнить итерацию по запросузначения и суммы кота:

$total = 0;
foreach ( $request->all() as $key => $value )
{
    if (strpos($key, 'cota') !== false) {
        $total += $value;
    }

    // or regex version to exclude the cota
    if ( preg_match('/cota[0-9]+/', $key) )
    {
        $total += $value;
    }

}

// here you will have the total sum
0 голосов
/ 02 июля 2019

Вы можете преобразовать запрос в коллекцию и сделать сумму с обратным вызовом, как показано ниже:

$sum = collect($request->all())->filter(function ($value, $key) {
    return Str::startsWith($key, 'cota');
})->sum();

...