Изменить данные запроса перед проверкой - PullRequest
1 голос
/ 27 мая 2019

Запрос данных:

    [
        "invoice_data" => [
            ...
            "discount" => null,
        ],
        "product_credit" => [
            ...
            "discount" => null,
        ]
    ];

Что я пытаюсь сделать

Я пытаюсь создать if statement для проверкиесли

$request -> invoice_data['discount'] == null, затем установите его на 0 ТАКЖЕ

$request -> product_credit['discount'] == null, затем установите на 0

Перед процессом проверки, потому что проверка не удалась.

Что я пробовал:

Я нашел метод вLaravel позвонил prepareForValidation() и использует $this -> merge([...]), что я и ищу, но проблема в том, что я не могу получить скидку в invoice_data и product_credit.

Ответы [ 2 ]

1 голос
/ 27 мая 2019

Более чистый способ установить значение атрибутов по умолчанию, чем редактирование в полезной нагрузке запроса:

Model {
   protected $attributes = [
      'inovice_data' => 0,
      'discount' => 0,
      'product_credit' => 0
   ];
}

Таким образом, если значения не предоставлены, или неопределенное значение или ноль, Eloquent установит эти атрибуты на определенныезначения по умолчанию при заполнении в дБ.

0 голосов
/ 27 мая 2019
<?php

$data =
[
        "invoice_data" => [
            "discount" => null,
        ],
        "product_credit" => [
            "discount" => null,
        ]
    ];

$keyWhitelist = [
    'invoice_data',
    'product_credit'
];

foreach ($data as $key => $entry) {

    if(!in_array($key, $keyWhitelist)) {
        continue;
    }

    if(key_exists('discount',$entry)) {
        if ($entry['discount'] === null) {
            $data[$key]['discount'] = 0;
        }
    }
}

var_export($data);

дает результат:

array (
  'invoice_data' => 
  array (
    'discount' => 0,
  ),
  'product_credit' => 
  array (
    'discount' => 0,
  ),
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...