Используйте транзакцию в Slim Framework - PullRequest
0 голосов
/ 18 ноября 2018

Я использую приведенный ниже код для вставки или обновления моих данных:

$app->post('/save_main_operation_info', function ($request) {
    $returning_info = [];
    try {
        $input = $request->getParsedBody();

        $this->logger->info("save_main_operation_info ->");
        $this->logger->info("   operation_id:" . $input['operation_id']);
        $this->logger->info("   register_date:" . $input['register_date']);
        $this->logger->info("   driver_personnel_id:" . $input['driver_personnel_id']);

        $sql   = "INSERT INTO `main_operation`(`operation_id`, `register_date`, `personnel_id`, `implementation_date`) VALUES (:operation_id, :register_date, :personnel_id, :implementation_date)";
        $query = $this->db->prepare($sql);
        $query->bindValue("operation_id", $input['operation_id']);
        $query->bindValue("register_date", $input['register_date']);
        $query->bindValue("personnel_id", $input['driver_personnel_id']);
        $query->bindValue("implementation_date", $input['register_date']);
        $query->execute();

        $returning_info["success"] = true;
    } catch (\Exception $exception) {
        $this->logger->error("save_main_operation_info ->");
        $this->logger->error("    ->" . $exception->getMessage());

        $returning_info["success"]       = false;
        $returning_info["error_message"] = $exception->getMessage();
    }
    return $this->response->withJson($returning_info);
});

Как я могу использовать транзакцию, когда хочу выполнить 4 или более запроса?Я вижу ^ но ничего не могу сделать.Спасибо

1 Ответ

0 голосов
/ 18 ноября 2018

В вашем случае PDO отвечает за транзакции базы данных.Вот пример:

$app->post('/save_main_operation_info', function ($request) {
    $returning_info = [];

    try {
        $input = $request->getParsedBody();

        // Start a new transaction
        $this->db->beginTransaction();

        $sql = "INSERT INTO `main_operation`(`operation_id`, `register_date`, `personnel_id`, `implementation_date`) 
          VALUES (:operation_id, :register_date, :personnel_id, :implementation_date)";
        $query = $this->db->prepare($sql);
        $query->bindValue('operation_id', $input['operation_id']);
        $query->bindValue('register_date', $input['register_date']);
        $query->bindValue('personnel_id', $input['driver_personnel_id']);
        $query->bindValue('implementation_date', $input['register_date']);
        $query->execute();

        // execute more queries...
        // ...

        // Commit all transaction changes
        $this->db->commit();

        $returning_info['success'] = true;
    } catch (\Exception $exception) {
        // Roll back all transaction changes
        $this->db->rollBack();

        $returning_info['success'] = false;
        $returning_info['error_message'] = $exception->getMessage();
    }

    return $this->response->withJson($returning_info);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...