170 похожих чатов

Всем привет Подскажите как работать с транзакциями в Eloquent\Model ?

Нужно создать модель Order , заполнить ее данными Далее нужно заполнить данными связанную модель OrderProducts И вот на этом этапе могут возникать ошибки и нужно чтоб вся цепочка откатилась Я так понимаю что при работе с моделями DB::rollBack() не работает?

13 ответов

20 просмотров

за транзакции учти что если у тебя длительная операция то таблица над которой идет транзакция будет недоступна для других запросов юзеров и будет плевать 500-е с текстом SQL STATE 0200

Eugene-Oleynikov Автор вопроса
FFx0001
за транзакции учти что если у тебя длительная опер...

так что лучше самому в catch отлавливать ошибки и вручную удалять такой заказ?

Eugene Oleynikov
так что лучше самому в catch отлавливать ошибки и ...

лучше да сделай массив в которых запоминаешь то что сделал и при ошибке вызвать ункцию которая по массиву в обратную сторону откатит операции ну либо рисковатьс транзакциями но надо окуратно чтоб не забанить кусок проекта для запросов о других юзеров

FFx0001
за транзакции учти что если у тебя длительная опер...

это с какой стати она будет не доступна?

DB::transaction(function() { // вот тут творишь все что нужно и если будет ошибка, rollback будет автоматом });

Egor Gruzdev
это с какой стати она будет не доступна?

Наверно инфраструктура наверно так настроена)) В один поток всё)

Egor Gruzdev
это с какой стати она будет не доступна?

если там какая нибудь продолжительная логика при которой в начале открывается транзакция и коммитится под конец то второй пользователь получит ворох исключений если попытается выполнить над теми же таблицами операции вставки или что то еще пока транзакция не завершилась

FFx0001
если там какая нибудь продолжительная логика при к...

все будет хорошо, не будет ворохов или еще чего то

ну были такие траблы в проекте один человек добавилтранзакций потом попытка вызвать этот же функционал другим пользователем сыпала ошибки от sql - да там бд в однопотоке и длительный импорт из файла

FFx0001
ну были такие траблы в проекте один человек добави...

если бездумно использовать lockForUpdate() то да можно огрести проблем, но в данном случае речи о сторонних сервисах не шло, все рамках дозволенного, потому проблем не должно быть

FFx0001
ну были такие траблы в проекте один человек добави...

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

Pavel
То есть если хотя бы одна запись косячная, то весь...

в том и суть транзакций если в коде происходит исключение когда открыта транзакция то она откатывается

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта