我需要能够使用3个不同ID中的1个从数据库中获取相同数据。 在这种情况下,我将使用session_id(对于来宾用户),account_id(对于已登录用户)或仅通过购物车的主自动递增键来获取购物车数据。
目前,我已经设置了三个GET API路由,但我想知道是否有更有效的方法来完成此操作
$router->get('carts/{id:i}', ['Controller\\CartController', 'getCartById']);
$router->get('carts/session-id/{sessionId:s}', ['Controller\\CartController', 'getCartBySessionId']);
$router->get('carts/account-id/{accountId:i}', ['Controller\\CartController', 'getCartByAccountId']);
session_id与TTL一起存储在浏览器cookie中。购物车在数据库中将始终至少具有一个session_id,但并非始终具有account_id(表示来宾用户)。
在这种情况下,您已经登录或是访客。
如果存储与购物车关联的session_id的Cookie过期,而您未登录,我们可以假定购物车已过期。如果该来宾用户想要再次向购物车中添加商品,我们将使用新的session_id为他们生成一个新商品。 我认为这张图说明得很好