Size: a a a

2020 September 16

DS

Dmitriy S in Yii Framework 3
Dmitry Morozov (aka Mirocow)
Бест практик, всегда инициализировать null
Далеко не все с этим здесь согласны, в моих пр регулярно выпиливают эту инициализацию)
источник

СП

Сергей Предводителев... in Yii Framework 3
О, в тему транзакций вопрос :) Подскажите как правильно делать.

Есть два репозитория для сущностей Entity1 и Entity2.
У репозиториев есть метод save, который сохраняет каждую из этих сущностей, используя транзакции.

Задача: в определённых ситуациях нужно сохранить обе сущности в рамках одной транзакции.

Как это правильнее делать:

1) оборачиваться в транзакцию вызов сохранения в репозиториях сущностей, что-то вроде:

... begin transaction ...
$this->entity1Repository->save($entity1);
$this->entity2Repository->save($entity2);
... end transaction ...

2) Писать отдельную функцию сохранения в рамкаха одной транзакции без вызова репозиториев.
источник

NO

Nex Otaku in Yii Framework 3
Ты-то не глупый. Просто так принято на собеседованиях сейчас. Мало кто умеет нормально проводить собеседование.

Думаю это изменится со временем. Как раньше было норм не знать солид, а сейчас в каждой второй вакансии требуют.

Так и на самих собеседованиях со временем подобные школьные вопросы станут зашкварными)
источник

DM

Dmitry Morozov (aka ... in Yii Framework 3
Если в репе нет работы со схемой можно обернуть блок
источник

NO

Nex Otaku in Yii Framework 3
Dmitry Morozov (aka Mirocow)
Кстати из опыта своего, как правило на собеседованиях нет цели завалить и как правило всегда спрашивается то, с чем придется заниматься на рабочем месте
то есть на рабочем месте ты альтеры в транзакциях используешь? пахнет звиздежом)
источник

DM

Dmitry Morozov (aka ... in Yii Framework 3
Ну про SOLID точно вопрос не зашкварный
источник

NO

Nex Otaku in Yii Framework 3
Dmitriy S
Далеко не все с этим здесь согласны, в моих пр регулярно выпиливают эту инициализацию)
+ что инициализировать не надо)
источник

DM

Dmitry Morozov (aka ... in Yii Framework 3
Nex Otaku
то есть на рабочем месте ты альтеры в транзакциях используешь? пахнет звиздежом)
А то что альтеры могут быть написаны не тобой, ты не можешь такое представить? Особенно на больших проектах
источник

DM

Dmitry Morozov (aka ... in Yii Framework 3
Nex Otaku
то есть на рабочем месте ты альтеры в транзакциях используешь? пахнет звиздежом)
Очень часто были ошибки когда в модели в афтерсайве делали какуюни будь операцию со схемой бд
источник

NO

Nex Otaku in Yii Framework 3
Сергей Предводителев
О, в тему транзакций вопрос :) Подскажите как правильно делать.

Есть два репозитория для сущностей Entity1 и Entity2.
У репозиториев есть метод save, который сохраняет каждую из этих сущностей, используя транзакции.

Задача: в определённых ситуациях нужно сохранить обе сущности в рамках одной транзакции.

Как это правильнее делать:

1) оборачиваться в транзакцию вызов сохранения в репозиториях сущностей, что-то вроде:

... begin transaction ...
$this->entity1Repository->save($entity1);
$this->entity2Repository->save($entity2);
... end transaction ...

2) Писать отдельную функцию сохранения в рамкаха одной транзакции без вызова репозиториев.
rep1->save();
rep2->save();
em->persist();
источник

Д

Дмитрий in Yii Framework 3
Dmitry Morozov (aka Mirocow)
При альтерах транзакции бесполезны
т.е. такой код сломается на второй транзакции, т.к. таблица существует?
источник

NO

Nex Otaku in Yii Framework 3
Dmitry Morozov (aka Mirocow)
А то что альтеры могут быть написаны не тобой, ты не можешь такое представить? Особенно на больших проектах
могу. но правильный ответ на этот вопрос я дал с самого начала. "зачем так делать?"
источник

MN

Maxim Naguchev in Yii Framework 3
Nex Otaku
Кстати мне понравилось как в Ларавел сделана транзакция БД.

Весь код что внутри транзакции обëртываешь в анонимную функцию и передаëшь в метод transaction. Там уже само автоматом ролбечит.

Удобно. Хорошо бы в Yii3 AR такое затащить.
Только если оставить возможность стартовать и откатывать транзакцию руками. По мне так ужастно неудобно все в лямбду заворачивать. Руками лучше откатывать
источник

DM

Dmitry Morozov (aka ... in Yii Framework 3
Дмитрий
т.е. такой код сломается на второй транзакции, т.к. таблица существует?
Кто говорил что сломается, я говорил что комит произойдет
источник

СП

Сергей Предводителев... in Yii Framework 3
Nex Otaku
rep1->save();
rep2->save();
em->persist();
а отдельный вызов rep1->save() в таком варианте отрабатывает внутри тоже с транзакцией?
источник

Д

Дмитрий in Yii Framework 3
Dmitry Morozov (aka Mirocow)
Кто говорил что сломается, я говорил что комит произойдет
что мне до этого комита, если за ним идёт rollback?
источник

NO

Nex Otaku in Yii Framework 3
Dmitry Morozov (aka Mirocow)
Очень часто были ошибки когда в модели в афтерсайве делали какуюни будь операцию со схемой бд
afterSave используете? ))) поздравляю, ваш код уже говно)
источник

NO

Nex Otaku in Yii Framework 3
я всегда запрещал пользоваться подобными костылями.
источник

DM

Dmitry Morozov (aka ... in Yii Framework 3
Те так создаешь таблицу делаешь инсерт в другую потом делаешь альтер и ролбек
источник

DM

Dmitry Morozov (aka ... in Yii Framework 3
Инсерт закомитится
источник