Как вставить многомерный массив в базу данных, используя laravel - PullRequest
1 голос
/ 13 июля 2020

У меня есть многомерный массив, который содержит зарплаты сотрудников в соответствии с годом заработной платы с соответствующими месяцами. Я хочу вставить зарплаты за разные годы в разные строки с соответствующими значениями месяцев. У меня также есть один столбец года и столбец 12 месяцев в таблице базы данных. Подскажите, пожалуйста, как мне вставить зарплаты сотрудников в разные строки таблицы. Моя структура многомерного массива выглядит так: -

Array
(
    [2016] => Array
    (
        [jan] => 15000
        [feb] => 15000
        [mar] => 15000
        [apr] => 15000
        [may] => 15000
        [jun] => 15000
        [jul] => 15000
        [aug] => 15000
        [sep] => 15000
        [oct] => 15000
        [nov] => 15000
        [dec] => 15000
    )

    [2017] => Array
    (
        [jan] => 20000
        [feb] => 20000
        [mar] => 20000
        [apr] => 20000
        [may] => 20000
        [jun] => 20000
        [jul] => 20000
        [aug] => 20000
        [sep] => 20000
        [oct] => 20000
        [nov] => 20000
        [dec] => 20000
    )
)

Ответы [ 2 ]

2 голосов
/ 13 июля 2020

Вы должны сгладить свой массив, вам нужен массив, например:

$data = [
   ['year'=>'2016', 'month'=>'1', 'salary' => 15000],
   ['year'=>'2016', 'month'=>'2', 'salary' => 15000],

   // ... and so on

Затем вы можете просто вставить, используя свою модель, например:

YourSalaryModel::insert($data);
0 голосов
/ 13 июля 2020

Вопрос. Почему вы их не сохранили (или не сохранили) в тот момент, то есть в январе 2017 года? (но это в стороне q)

У меня была бы таблица зарплат с столбцом даты (2016-01-01), user_id и зарплатой (будь то int или float / double в зависимости от того, являются ли они всегда целое число или может быть с плавающей точкой).

В вашем примере это случай выполнения двух циклов:

foreach ($salaries as $year => $months) { 
    foreach ($months as $month => $salary) {
       // carbon parse to create a date 
       //insert into the table
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...