
Pavel
18.01.2017
22:21:38

Бернгардт
18.01.2017
22:21:51
а - я работаю в продуктовой компании, вот црм
это как я работаю директором, в фирме ) большой )
ыы
ни о чем не говорит, кроме попыток показать какой ты крутой )

Google

Pavel
18.01.2017
22:22:20

Haik
18.01.2017
22:22:24

Vite4eg
18.01.2017
22:22:24

Pavel
18.01.2017
22:22:25
Вы спросили я ответил)

Бернгардт
18.01.2017
22:22:38
покажи конкретно что ты можешь )

Pavel
18.01.2017
22:22:59

Бернгардт
18.01.2017
22:23:43

Vite4eg
18.01.2017
22:23:48
Итак, приходит ко мне клиент. Хочу, говорит, магазин. А я ему - на ороцрм. Там магазина нет, зато все тестами покрыто

Бернгардт
18.01.2017
22:23:56

Pavel
18.01.2017
22:24:36

Бернгардт
18.01.2017
22:24:53
пруф что ты там работаешь, пруф вклада )
если слово "примонтировать" вызывает трудности, а клиента протокола от клиента маунта не отличаешь
у меня большие вообще вопросы в твоей компетенции )

Pavel
18.01.2017
22:25:00

Google

Бернгардт
18.01.2017
22:25:12
ага, понял)
огоцрм поищи.. я хз где оно, может и нет такой
меня поищи )

Vite4eg
18.01.2017
22:25:35
Битрикс популярен прежде всего тем, что магазин намнем очень быстро поднимается

Бернгардт
18.01.2017
22:27:31

Vite4eg
18.01.2017
22:27:53
В противовес приводилась магента. Ну ок, давай сравним проекты. И тут нам говорят, что oroCRM. Мы же про магазины говорили. Если сравнивать CRM, то это другой разговор

Бернгардт
18.01.2017
22:27:57
а если приватный класс тестировать, это же ваще ппц, не справится)

Pavel
18.01.2017
22:28:01

Бернгардт
18.01.2017
22:28:16
оу, волшебное слово нда, ну ок )

Pavel
18.01.2017
22:28:40

Бернгардт
18.01.2017
22:28:41
видимо урл огоцрм тоже нда не дает )

Pavel
18.01.2017
22:28:48
Ок все ребя твы меня пабидили)

Бернгардт
18.01.2017
22:29:00
да никто тебя пабиждать не собирался )

Pavel
18.01.2017
22:29:23

Бернгардт
18.01.2017
22:29:25
остынь, над тобой просто посмеялись и не больше )
ладно, давай ... продолжение надеюсь знаешь)

Pavel
18.01.2017
22:29:53

Vite4eg
18.01.2017
22:30:06
А прибыть oroCRM приносит? Большую?

Бернгардт
18.01.2017
22:30:10
пфф

Vite4eg
18.01.2017
22:30:12
И кому?

Бернгардт
18.01.2017
22:30:31

Google

Ok
18.01.2017
22:30:55
шо мы на человека накинулись?

Pavel
18.01.2017
22:31:11

Бернгардт
18.01.2017
22:31:23
а не, нашел, самый заминусованный же ))
8,235 ++ / 20,618 —
ыыы
бугага

Ok
18.01.2017
22:31:36
работает себе, делает вклад в срм

ⓛⓤⓒⓘⓤⓢ➁➆
18.01.2017
22:31:43

Ok
18.01.2017
22:32:11
ночь, битрикс меня замучал модуль рассылок

Vite4eg
18.01.2017
22:32:17
На самом деле тут два подхода к продукту

Бернгардт
18.01.2017
22:32:19
не, серьезно.. самый заминусованный, я думал мне показалось
видимо тоже мозги всем ебет ?

Ok
18.01.2017
22:32:20
а тут такое)

Vite4eg
18.01.2017
22:32:30
Каждый на битрикс по-разному смотрит

Ok
18.01.2017
22:32:39
он всего лишь более за качество битрикса
и за уменьшение кол-ва багов

Vite4eg
18.01.2017
22:32:49
За качество кода
но по сути да

Pavel
18.01.2017
22:33:34


Бернгардт
18.01.2017
22:33:53
protected function changeOnDeleteToCascade(Schema $schema, array $data)
+ {
+ foreach ($data as $tableName => $columns) {
+ $table = $schema->getTable($tableName);
+ foreach ($columns as $column) {
+ $foreignKeys = $table->getForeignKeys();
+ foreach ($foreignKeys as $foreignKey) {
+ $foreignKeyColumns = $foreignKey->getUnquotedLocalColumns();
+ if ($foreignKeyColumns === [$column]) {
+ if ($foreignKey->getOption('onDelete') !== 'CASCADE') {
+ $table->removeForeignKey($foreignKey->getName());
+ $table->addForeignKeyConstraint(
+ $foreignKey->getUnqualifiedForeignTableName(),
+ $foreignKeyColumns,
+ $foreignKey->getUnquotedForeignColumns(),
+ ['onDelete' => 'CASCADE', 'onUpdate' => $foreignKey->getOption('onUpdate')]
+ );
+ }
+
+ break;
+ }
+ }
+ }
+ }
+ }
+}
и этот человек говорит о качестве кода?
может еще 10 уровней вложенности докрутить? почемуб нет)
давно так не ржал, спасибо)

Pavel
18.01.2017
22:34:52

Google

Бернгардт
18.01.2017
22:38:43
без целевой системы будет сложно.. но сейчас попробую )
это даже забавно)

Pavel
18.01.2017
22:39:20

Бернгардт
18.01.2017
22:39:41
да ну) это же тестить надо)
я тебе сейчас скину, протестишь) будет явно читабельнее)
10 минут) тут ничего сложного)

Pavel
18.01.2017
22:40:12

Бернгардт
18.01.2017
22:40:22
сколько платишь?

Pavel
18.01.2017
22:40:54

Бернгардт
18.01.2017
22:41:24
я показал на косячный код)
засомневался в адекватности, вижу подтверждение

Admin
ERROR: S client not available

Бернгардт
18.01.2017
22:41:50
ты пытаешься поддеть, могу показать как правильно, мне ен сложно)

Pavel
18.01.2017
22:41:52

Бернгардт
18.01.2017
22:42:10
антипаттерн - пять уровней вложенности
второе - они не обязательны)
для начала
$foreignKeys = $table->getForeignKeys();
можно получить вначале
два foreach прогонять ради того чтобы найти
if ($foreignKeyColumns === [$column]) {
(остальное пропускается) - антипаттерн
думаю есть еще логическая ошибка - в foreach идет запрос, тут уже надо смотреть целевую систему, есть вероятность что делает обращение к внешнему источнику, но даже без него.. получается забавно
до трех уровней можно сократить)
если хочешь, могу пару частных уроков дать ;) бугага
но не больше)

Pavel
18.01.2017
22:44:42

Google

Бернгардт
18.01.2017
22:45:38
ахаха

Pavel
18.01.2017
22:45:42
Для того код и лежит на гитхабе что бы его комьюнити улучшало)

Бернгардт
18.01.2017
22:45:43
жги еще ?
меня на работу пригласят, радость то какая ???

Pavel
18.01.2017
22:46:02
жги еще ?
Т.е. ты не настолько хорошиый спец?)))

Бернгардт
18.01.2017
22:46:06
а я тебя не возьму, уж прости)
бля, чувак, я техдир) со своим офисом
и очень интересными большими проектами
напуркуа мне какая то твоя црм?
ахахах
блин, спасибо, ты мне сделал вечер ?

Pavel
18.01.2017
22:47:11

Бернгардт
18.01.2017
22:48:07

Pavel
18.01.2017
22:48:30
Pull Request.


Бернгардт
18.01.2017
22:52:42
хм, да смысла не вижу просто, время забито
я лучше время разгребу и проведу его или с семьей-детишками, или тромбон кулисный наконец освою, а то на помповом надоело
жизнь не кончается на программировании )
foreach ($columns as $column) {
foreach ($foreignKeys as $foreignKey) {
$foreignKeyColumns = $foreignKey->getUnquotedLocalColumns();
if ($foreignKeyColumns === [$column]) {
поиск таблицы с одной записью чтоли?
всмысле массива
а, хотя нет, сравнение двух массивов.. блин.. вот логика..
Дык сделай. Глядишь на работу пригласят, как хорошего спеца)
protected function changeOnDeleteToCascade(Schema $schema, array $data) {
foreach ($data as $tableName => $columns) {
$table = $schema->getTable($tableName);
$foreignKeys = $table->getForeignKeys();
$arrForeignKeyColumns = [];
foreach ($foreignKeys as $key=>$foreignKey) {
$foreignKeyColumns = $foreignKey->getUnquotedLocalColumns();
$arrForeignKeyColumns[$key] = $foreignKeyColumns;
}
foreach ($columns as $key=>$column) {
$columns[$key] = $column;
}
$arDiff = array_intersect($arrForeignKeyColumns, $columns);
$arKeys = array_keys($arDiff);
foreach($arKeys as $key) {
$foreignKey = $foreignKeys[$key];
if ($foreignKey->getOption('onDelete') !== 'CASCADE') {
$table->removeForeignKey($foreignKey->getName());
$table->addForeignKeyConstraint(
$foreignKey->getUnqualifiedForeignTableName(),
$foreignKeyColumns,
$foreignKey->getUnquotedForeignColumns(),
['onDelete' => 'CASCADE', 'onUpdate' => $foreignKey->getOption('onUpdate')]
);
}
}
}
}
}
наверняка опечатался, потому что делал без возможности перепроверки, но дикую вложенность убил, да и прирост будет наверняка на поиске, надо лишь проверить, и возможно устранить досадные опечатки
можешь не благодарить


Pavel
18.01.2017
23:05:53
?
protected function changeOnDeleteToCascade(Schema $schema, array $data) {
foreach ($data as $tableName => $columns) {
$table = $schema->getTable($tableName);
$foreignKeys = $table->getForeignKeys();
$arrForeignKeyColumns = [];
foreach ($foreignKeys as $key=>$foreignKey) {
$foreignKeyColumns = $foreignKey->getUnquotedLocalColumns();
$arrForeignKeyColumns[$key] = $foreignKeyColumns;
}
foreach ($columns as $key=>$column) {
$columns[$key] = $column;
}
$arDiff = array_intersect($arrForeignKeyColumns, $columns);
$arKeys = array_keys($arDiff);
foreach($arKeys as $key) {
$foreignKey = $foreignKeys[$key];
if ($foreignKey->getOption('onDelete') !== 'CASCADE') {
$table->removeForeignKey($foreignKey->getName());
$table->addForeignKeyConstraint(
$foreignKey->getUnqualifiedForeignTableName(),
$foreignKeyColumns,
$foreignKey->getUnquotedForeignColumns(),
['onDelete' => 'CASCADE', 'onUpdate' => $foreignKey->getOption('onUpdate')]
);
}
}
}
}
}
наверняка опечатался, потому что делал без возможности перепроверки, но дикую вложенность убил, да и прирост будет наверняка на поиске, надо лишь проверить, и возможно устранить досадные опечатки
можешь не благодарить


Бернгардт
18.01.2017
23:10:49
$columns[$key] = [$column];
конечно же..
ну и если все эти foreach не являются скрытыми yeild обращениями к бд на самом деле, т.е. не вызовут проблем с нагрузкой, то лучше рефактор вот еще такой провести
foreach ($columns as $key=>$column) {
$columns[$key] = [$column];
}
заменить на
array_map(function($column){
return [$column]
}, $columns);
т.к. нагляднее
и заменить
foreach ($foreignKeys as $key=>$foreignKey) {
$foreignKeyColumns = $foreignKey->getUnquotedLocalColumns();
$arrForeignKeyColumns[$key] = $foreignKeyColumns;
}
на
array_map(function($v){
return $foreignKey->getUnquotedLocalColumns();
}, $foreignKeys);
т.к. опять же и нагляднее и не вынуждает заводить временную переменную,
которую завел чтобы не терять контекст

Mike
18.01.2017
23:19:52
Можно в следующий раз это куда-нибудь на pastebin размещать?