
Сергей
24.10.2018
07:14:45

Илья
24.10.2018
07:15:00
понял
но это так, пальцем в небо

Сергей
24.10.2018
07:15:13

Google

Сергей
24.10.2018
07:15:29

Илья
24.10.2018
07:16:02

Сергей
24.10.2018
07:16:07
ок

Egin
24.10.2018
07:17:59

Сергей
24.10.2018
07:18:10

Egin
24.10.2018
07:19:04
https://habr.com/post/423337/

Илья
24.10.2018
07:22:49

Сергей
24.10.2018
07:23:05

Aleks
24.10.2018
07:28:46

Сергей
24.10.2018
07:29:01

Aleks
24.10.2018
07:29:06
стоит он
Debugbar::startMeasure('render','Time for rendering');
Debugbar::stopMeasure('render');
Debugbar::addMeasure('now', LARAVEL_START, microtime(true));
Debugbar::measure('My long operation', function() {
// Do something…
});

Сергей
24.10.2018
07:29:25

Google

Aleks
24.10.2018
07:29:31

Евгений
24.10.2018
07:30:19
Ребят, помогите придумать как сделать перенос базы.
Есть старая база на опенкарте. Там категории, у категорий есть parent_id и sort_order.
В новой базе категории будут nested set (parent_id, _lft, _rgt).
При переносе категорий у них будут разные айдишники (у старой базы будут отличаться от новой базы). Соответственно и parent_id надо менять. Как это можно сделать без сложных циклов, потому что категорий много

ExPandable
24.10.2018
07:31:09
ну форичем тупо перебери записи)

Aleks
24.10.2018
07:31:21

Евгений
24.10.2018
07:31:48
чтобы не проходить все категории по базе и перезаписывать
как бы пройтись и перезаписать легко можно, но запросов чот много

Aleks
24.10.2018
07:32:30
там пакет упоминается kalnoy/nestedset у него есть статичный метод Category::fixTree(); на базе parent_id сам пропишет lft rgt

Евгений
24.10.2018
07:32:41
просто там не только категории переносятся, и будет скрипт который много всего будет переносить
но вопрос то не в этом
в старой базе есть категория у которой id = 500, когда мы копируем её к себе в базу то у нас в базе может быть другой айдишник (например 250). А все категории у которых parent_id = 500 надо переписать на parent_id = 250
то есть вопрос в актуализации parent_id под айдишники в новой базе, без обхода циклом всей базы

Aleks
24.10.2018
07:35:09
Я в таких случаях в новой базе делал поле old_id и от него уже потом обновлял остальные записи

Евгений
24.10.2018
07:35:12
я хотел одним insert-ом все записи вставить, но parent_id после инсерта придётся перезаписывать с новыми айдишниками. Мы новые айдишники не знаем до того как скопируем категорию в базу
old_id есть
но чтобы обновить данные всё равно придётся проходить по базе снова

ExPandable
24.10.2018
07:35:39

Евгений
24.10.2018
07:35:54
baum не поддержкивается давно уже

ExPandable
24.10.2018
07:36:06
но он тем не менее рабочий

Google

Евгений
24.10.2018
07:36:50
шыыгуы 115б чот не хочется, kalnoy уже юзал много так что тут не стоит вопрос выбора

Aleks
24.10.2018
07:36:53
а нельзя в новую базу перенести со старыми id? если новая база пустая, то вроде ничего не должно помешать

Евгений
24.10.2018
07:38:00
в старой базе есть удалённые категории, то есть например 1,3,5,7. При переносе они запишутся как 1,2,3,4
ну это если просто insert-ом делать, можно конечно наверно извратиться как то чтоб автоинкремент отключить... да ну нафиг

Anton
24.10.2018
07:55:39
А почему ты со старыми айдишниками перенести не хочешь?
Ну или как вариант переносишь с двумя доп колонками - old_id, old_parent_id

Евгений
24.10.2018
07:57:28

Anton
24.10.2018
07:58:01
Удаленные == дырки в ид?

Евгений
24.10.2018
07:58:04

Anton
24.10.2018
07:58:35
В смысле парент_ид
А одним запросом с ид, прям с автоинкрементными
Их можно вставлять.

Евгений
24.10.2018
08:00:04
ну то есть сначала инсертнуть все категории. Потом пройтись и перезаписать все parent_id на новые айдишники? Это сколько запросов еще потребуется? Или это можно несложно апдейтнуть?
категорий пусть например 1млн

Anton
24.10.2018
08:03:04
Почему есть какой то затык с кол-вом запросов?
Это постоянная операция?
Или разовый импорт?

Google

Anton
24.10.2018
08:03:33
Почему нельзя со старыми ид импортировать?

Евгений
24.10.2018
08:04:16
это не постоянная операция, но и не разовая. Иногда придётся запускать

Anton
24.10.2018
08:06:48
В чем проблема?
Или ты хотел убрать дырки?

Евгений
24.10.2018
08:09:40
когда я делаю Category::insert($array) то он заполняет айдишники автоинкрементно, 1,3,5,7 превращается в 1,2,3,4

Anton
24.10.2018
08:09:56
Зачем ты так делаешь?
Я же написал как внести

Евгений
24.10.2018
08:10:54
там таблицы разные. В старой таблице описания лежат в другой таблице и всё берется джоинами, а в новой в одну складируется. Попробую привести к такому виду

Anton
24.10.2018
08:11:23
Ты видел мой запрос?

Евгений
24.10.2018
08:11:32

Anton
24.10.2018
08:11:38
Вот в правой части где селект - ты можешь любой запрос писать.

Евгений
24.10.2018
08:11:48
я понял, говорю что щас порпобую
но там еще дело не только в parent_id, а в порядке категорий. В старой системе это sort_order а в новой надо переписать под _lft _rgt. То есть надо сначала order by sort_order наверно

Alex
24.10.2018
08:12:31
Ребят скажите пожалуйста wtf?

Даниил
24.10.2018
08:14:03
исключил второй элемент, что не так?

Alex
24.10.2018
08:14:30

Даниил
24.10.2018
08:14:32
ты ему передал ключ, он его выкинул, все как надо

Google

Даниил
24.10.2018
08:14:39
The except method returns all items in the collection except for those with the specified keys:

Евгений
24.10.2018
08:15:14

Anton
24.10.2018
08:15:50
У тебя другая база на этом же хосте или другом?

Евгений
24.10.2018
08:16:12
на тестовом на этом же. Потом убдет на другом

Anton
24.10.2018
08:16:36
Если на одном, то перед названием таблицы ты можешь поставить название бд.
Db1.table1
Если на разных - так не получится.

Евгений
24.10.2018
08:17:14
блэд
ок, спасибо, буду думать

Vladij
24.10.2018
08:33:27
Привет, вопрос, как мне обновить допустим 1000 записей в БД одновременно? Спасибо

Yaroslav
24.10.2018
08:35:50
UPDATE table SET title=123 WHERE id >= 1 AND id <= 1000

Vladij
24.10.2018
08:38:37

Митяй
24.10.2018
08:39:17
Model::where(условие)->update([field1 => 1, field2 => 2])

Yaroslav
24.10.2018
08:40:06
DB::table('table')->where('id', '>=', 1)->where('id', "<=", 1000) ->update(['title' => 123]);

Митяй
24.10.2018
08:40:18
https://laravel.com/docs/5.7/queries#updates

Vladij
24.10.2018
08:43:17
https://laravel.com/docs/5.7/queries#updates
видел, смотрел....чет не получается....в двух словах: $foo = массив с 1000 записями; я делаю так? Model::where('id_one', '=', $foo)->update('prop1' => $prop1, 'prop2' => $prop2.......);

Maxim
24.10.2018
08:44:48

Vladij
24.10.2018
08:46:51

Maxim
24.10.2018
08:48:04