Andrzej Wielski: В общем мне представляется, так не срабатывает из за разного количества элементов коллекций, т.к. числовой ключ после слияния, самый последний ключ, значение не четное, следовательно, количество элементов не одинаковое, а как он может мерджить не одинаковое количество пар значений, посему пристраивает значения второй коллекции снизу, неужели на этом заканчиваются чудеса коллекций?? Как можно рассовать значения по ключам??
Попробовал поставить вместо числовых авто-ключей сначения
//$gr_name = $gr_name->keyBy('c_id_item');
//$price_name = $price_name->keyBy('c_id_item');
//$all_data= $gr_name->merge($price_name);
И все равно не получается.
на выходе:
Array ( [0] => Array ( [0] => Array ( [c_id_item] => 99b28712-c178-49fe-be49-3506e6f3468b [c_id_group_item] => 1f1fbcfd-d105-11e3-836e-e069950d47ec ) сначала такие массивы в коллекции
=> Array ( [c_id_item] => 99b28712-c178-49fe-be49-3506e6f3468b [name_item] => 1-53225-105-4 )
потом вот
Я однако тупой... Что не так?? Помогите, пожалуйста.
Andrzej Wielski: В общем не получилось, записалось опять дважды первый одни столбики заполнились второй раз другие
$all_data= collect([]);
$all_data2= collect([]);
$all_data2= $all_data2->merge($gr_name);
$all_data2= $all_data2->merge($item_name);
$all_data= $all_data->merge($all_data2);
Andrzej Wielski:
$table->increments('id');
$table->string('c_id_group_item');
$table->string('c_id_item');
$table->string('name_item');
$table->string('price');
$table->string('ostatok');
$table->timestamps();
$gr_name массив с ключем 'c_id_item и значением c_id_group_item
$item_name массив с ключем 'c_id_item и значением name_item
и так далее, хочу объеденить все в одну коллекцию и засунуть в бд, но в случае с паровозом но запишет сперва
$table->string('c_id_item');
$table->string('name_item');
затем
$table->string('c_id_group_item');
$table->string('c_id_item');
Item::insert($all_data->toArray()); вот так, а если там будет паравоз, то он мне и запишет в два раза больше строчек чем нужно, в каждой строке по 3 значения разных типов
Andrzej Wielski: так второй массив он вставит следом, а значения к примеру $gr_name и $item_name должны записываться в одну модель, т.е. в $all_data должна в итоге получиться коллекция с 6 значениями в каждом массиве, т.е. разом записать в базу все значения
kolyafat: Добрый день, вобщем у меня так ничего и не получилось
$all_data= collect([]);
$all_data= $all_data->merge($gr_name);
$all_data= $all_data->merge($item_name);
получается снова паровоз из массивов
присоединяю массивы
Я видимо вообще уже ничего не соображаю, ведь значения 3 и 4 встали в конец массива, т.е. не к значениям 1 и 2??? Из мануала:
$collection = collect(['product_id' => 1, 'name' => 'Desk']);
// ['product_id' => 1, 'name' => 'Desk', 'price' => 100, 'discount' => false]
т.е. как я понял в моем случае в $item_name должны добавляться соответствующие значения 3 и 4, а он получается просто записывает в хвост
Andrzej Wielski: Андрей, Добрый день, прошу помощи, не получается с объединением коллекций, если в коллекции ключи числовые, то при объединении массивов в коллекцию добавляется второй массив в конец, а как менять ключи коллекции, чтоб они соответствовали??? Пожалуйста подскажите, а то мне конец.
Andrzej Wielski: Можно еще подсказочку получить, а как несколько массивов объеденить, чтоб потом все данные одним запросом записать, ключи у массивов одинаковые, а вот значения нужно по разным колонкам записать?
Попробовал поставить вместо числовых авто-ключей сначения
//$gr_name = $gr_name->keyBy('c_id_item');
//$price_name = $price_name->keyBy('c_id_item');
//$all_data= $gr_name->merge($price_name);
И все равно не получается.