Спасибо. Поясню задачу. Нужно создать документ PDF с уникальным номером. Номер цифро-буквенный. Последний номер хранится в БД в свободной форме varchar(20) в `tab2`
1. Создается строка в БД, у которой нормальный `id` AI. (tab1)
2. С помощью $db->lastInsertId() вытаскиваем этот новый только что созданный ID.
3. Берем последнее значение цифро-буквенного номера из tab2 (тут желательно заблочить таблицу tab2)
4. Делаем UPDATE tab1.`doc_number`
5. Генерируем новый номер для следующего документа и сохраняем его в tab2.
6. Разблокируем таблицу tab2.
тем самым не перепутаются данные одновременно созданных документов у разных клиентов.
На счет транзакции верно говорите, перепутал. Нужна блокировка. Усложняется еще и тем, что пункты 3 и 5 это два других метода settingsGet и settingsSet
Александр Аксентьев, В процедурном стиле, разные функции писал всегда на разных файлах.
Тут речь про ООП. Вот хочу я взять метод "создания" и вынести в отдельный файл, вот легче с ним работать, меньше кода, быстрее все искать. Пока что я, кроме как наследования, не придумал ничего. если это технически невозможно, то так и скажите.
Александр Аксентьев, не, на отдельную тему потянет. Там трешак нормальный такой.
Спасибо за поддержку. Создам класс App, в нем буду соединять все классы и БД.
Ну а почему не создать? Я изначально продумываю то, как будет класс работать. Внутри класса при получении переменных через filter как раз модифицируется запрос к БД посредством =, like%, IN.
Александр Аксентьев, почему глобально-nj? Раз передали объект БД в класс и работай сколько влезет. Вы про зависимости не читали?
Пздц, одни уверяют что ЛУЧШЕЕ решение это как раз передать объект бд через конструктор. Другие - можно присваиванием $invoice->db = DB::instance();
Но зато ацки гнобят, когда внутри класса есть что-то nbgf DB::...
То есть коммутатор сам по себе ничего не сделает без роутера?
Я это к чему, у нас один IP приходит в офис. На каждом компе тот же самый ip только на конце меняется цифра. Без роутера ведь как-то раньше работали, когда компов было 10 штук всего.
1. Создается строка в БД, у которой нормальный `id` AI. (tab1)
2. С помощью $db->lastInsertId() вытаскиваем этот новый только что созданный ID.
3. Берем последнее значение цифро-буквенного номера из tab2 (тут желательно заблочить таблицу tab2)
4. Делаем UPDATE tab1.`doc_number`
5. Генерируем новый номер для следующего документа и сохраняем его в tab2.
6. Разблокируем таблицу tab2.
тем самым не перепутаются данные одновременно созданных документов у разных клиентов.
На счет транзакции верно говорите, перепутал. Нужна блокировка. Усложняется еще и тем, что пункты 3 и 5 это два других метода settingsGet и settingsSet