La forma ideal y buena de usar el carrito es mantenerlo en sesión, la clase de carrito de codeigniter está haciendo lo mismo, y cuando el usuario da un pedido, use estos datos, coloque este pedido en la base de datos y haga otras cosas como pasarela de pago, envío. Si lo desea use el usuario para mantener su pedido en la próxima sesión, como si el usuario agrega algún producto en el carrito y sale antes de dar el pedido y es un usuario registrado, entonces puede guardar su carrito cada vez en la base de datos, de modo que si se fue sin poner puede mostrarle sus pedidos la próxima vez que inicie sesión.
Puede almacenar los datos del carrito de los usuarios en la base de datos usando $this->cart->contents();
método de cart class.use así
$cartContentString = serialize($this->cart->contents());
obtendrá una cadena de contenido del carrito, puede guardar esta cadena en la base de datos y luego usarla como
$cartArray = unserialize($cartContentString);