Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Laravel Framework v5.5.20
PHP Version 7.1.6
Операционная система и её версия: windows 10
Добрый день.
Сталкнулся со следующей проблемой.
В БД есть 2-е таблицы:
check:
id,check_id,value
product:
id,product_id,value
Из формы post запросом приходит следующий массив:
array:7 [▼
"_token" => "9rMpvH21d22EngePxhEdqPcNCQC7o8wqJpTyZCUp"
"check_id_2" => "on"
"orders_id" => "10"
"product_id_2" => "6"
"check_id_3" => "on"
"product_id_3" => "7"
"product_id_1" => null
]
Передо мной предстала задача достать данные из массива и записать их в нужные таблицы.
На выходе должно получиться следующее.
Записи начинающиеся на "check_id_" заносим в таблицу check, а "product_id_" - в product.
Примерно так:
check:
id,check_id,value
1, 2, on
2, 3, on
product:
id,product_id,value
1, 2, 6
2, 3, 7
3, 1, 0
Подскажите, пож-та, как это можно реализовать?
Не в сети
Это реально вызывает такой затык?
Не в сети
Возможно, большинству это не проблема. Но новичку вроде меня вызывает трудности. Затык заключается в том, как отделить нужные записи из массива и записать их.
Не в сети
А почему в таблице check есть id и check_id? И в product также?
В цикле создавай записи через create:
$model->create([
'product_id' => array[$i],
'value' => $value
]);
Если хочешь одним запросом в БД сразу много записей добавить, подготовь массив в таком формате:
$products = [
['product_id' => array[$i], 'value' => $value],
['product_id' => array[$i], 'value' => $value],
....
];
И потом вставляй в БД одним запросом:
DB::table('product')->insert($products);
Не в сети
Спасибо за ответ.
А почему в таблице check есть id и check_id? И в product также?
Это упрощенный вариант, чтобы показать суть проблемы без "пыли". Реальный пример сложнее.
$model->create([ 'product_id' => array[$i], 'value' => $value]);
Правильно ли я понимаю, array[$i] - это весь массив, который я получаю? Если так, то каким образом указать какие данные необходимо записать для таблицы check, а какие для product? И второй вопрос как отделить от ключей массивов текст check_id_ и product_id_, чтобы остались только значения id?
Не в сети
Правильно ли я понимаю, array[$i] - это весь массив, который я получаю? Если так, то каким образом указать какие данные необходимо записать для таблицы check, а какие для product? И второй вопрос как отделить от ключей массивов текст check_id_ и product_id_, чтобы остались только значения id?
Я просто пример привел как встввлять данные в БД. Как работать со своим массивом тебе виднее, я здесь не отвечу. Возможно, ты захочешь делать что-то вроде $array['product_id_' . $i]
Не в сети
Как записать данные я как раз знаю. )))
Тут основная задача как-раз была отсечь ненужный текст из ключей и исходя от названий ключей заносить данные в нужную таблицу.
Всё равно огромное спасибо за подсказку.)))
Не в сети
Не в сети
Отлично.
Теперь я получаю такие массивы
array:2 [▼
"check_id" => array:2 [▼
2 => "on"
3 => "on"
]
"product_id" => array:3 [▼
2 => "6"
3 => "7"
1 => null
]
]
С этим уже можно работать.
Большое спасибо
Не в сети
Страницы 1