Ассоциативный массив, итерация ключей и значений PHP LARAVEL - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть этот массив:

array:43 [▼
  "ALFA ROMEO" => array:1 [▼
    0 => "145"
  ]
  "AUDI" => array:6 [▼
    0 => "A1"
    1 => "A3"
    2 => "A4"
    3 => "A5"
    4 => "AUDI 80"
    5 => "Q3"
  ]
  "BMW" => array:15 [▼
    0 => "116I"
    1 => "118I"
    2 => "318I"
    3 => "318IA"
    4 => "320I"
    5 => "320IA"
    6 => "325I"
    7 => "328I"
    8 => "330I"
    9 => "535I"
    10 => "X1"
    11 => "X3"
    12 => "X5"
    13 => "X6"
    14 => "Z4"
  ]
]

Я хотел бы сделать это:

Получить ключ ( ALFA ROMEO / AUDI / BMW ) и найдите этот ключ в таблице ( бренды ), получите id этой марки и выполните итерацию внутри массива "ALFA ROMEO", чтобы получитьмодель ( 145 ) и вставьте в новую таблицу с именем model_car (brand_id, model).И сделать то же самое с AUDI, BMW и т. Д.

Я знаю, что это легко, но мой разум не работает!

Спасибо.

1 Ответ

0 голосов
/ 10 декабря 2018

Попробуйте код ниже, это может помочь вам достичь того, что вы хотели.

/* Let $array be the array posted by you. */
foreach ($array as $key => $data) {
    /* Fetch brand id by name. Assuming the name field replace it by your own. */
    $brand = Brands::where('name', $key)->first();

    /* Prepare array of brand id and model to be mass inserted. */
    $brandModel = [];
    foreach ($data as $i => $model) {
        $brandModel[$i]['brand_id'] = $brand->id;
        $brandModel[$i]['model'] = $model;
    }
    ModelCar::insert($brandModel);        //Insert into the new table model_car
}
...