Home >Backend Development >PHP Tutorial >Simple operation of hash data type (implementation of shopping cart case)
How about not being too cumbersome hereInstallationredis and php redis extension, mainly Familiar with calling redis hashData type
As shown in the figure
Simple method The operation is as follows
1:hSet
2:hGet
useOrg\Net\Http;
useThink\
Cache\Driver\Redis;
classIndexControllerextendsController
{private$redis_obj =null;
public functionconstruct()
newRedis();
}
file: Determine whether the reduced product exists in the shopping cart
*@param$user_id
public functiongoods_is_exist($user_id,$goods_id)
{
$ r1=$this->redis_obj->hExists($user_id,$goods_id);
##return
$r1;}/ ***@file:Add items to shopping cart
**/public functionadd_goods(){$user_id= intval($_POST['user_id']) ? intval($_POST[' user_id']) :0;$goods_id= intval($_POST['goods_id']) ? intval($_POST['goods_id']) :0;$exist=$ this->goods_is_exist($user_id,$goods_id);if
(!empty($user_id) &&$goods_id) {//There is no added product if(!$exist) {$add_return=$this->redis_obj->hSet($user_id,$goods_id,1);
if( $add_return) {$this->ajaxReturn(array
('code'=>0,'msg'=>'success'));}else{
$this->ajaxReturn(array('code'=>1,'msg'=>'error'));
}
}elseif($exist) {
//The existing product is increased by 1
$add_exist_result=$this->redis_obj->hIncrBy( $user_id,$goods_id,1);
if($add_exist_result) {
$this->ajaxReturn(array('code'=>0,'msg'=> 'success','1'=>$add_exist_result));
}else{
$this->ajaxReturn(array('code'=>1,'msg' =>'error'));
}
}
}
}
//Reduce the items in the shopping cart
public functionreduce_goods()
{
$user_id= intval($_POST['user_id']) ? intval($_POST['user_id']) :0;
$goods_id= intval($_POST['goods_id']) ? intval($_POST['goods_id']) :0;
if(!empty($user_id) &&$goods_id ) {
$exist=$this->goods_is_exist($user_id,$goods_id);
//Does not exist
if(!$exist) {
$this->ajaxReturn(array('code'=>1,'msg'=>'goods is not exist '));
}elseif($exist) {
$val=$this->redis_obj->hGet($user_id,$goods_id);
if($val==1) {//There is only one item in the shopping cart When reduced to 0, it is Delete
$del_result=$this->redis_obj->hDel($user_id,$goods_id);
if($del_result= =1) {
$this->ajaxReturn(array('code'=>0,'msg'=>'success','num'=>0));
}
}elseif($val>1) {
$new_value=$this->redis_obj->hIncrBy($user_id,$goods_id,-1);
if($new_value>0) {
$this->ajaxReturn(array('code'=>0,'msg'=>'success','num'= >$new_value));
}else{
$this->ajaxReturn(array('code'=>1,'msg'=>'error')) ;
}
}
}
}else{
$this->ajaxReturn(array('code'= >1,'msg'=>'param is empty'));
}
}
//Remove product
public functionrm_goods()
{
$user_id= intval($_POST['user_id']) ? intval($_POST['user_id']) :0;
$ goods_id= intval($_POST['goods_id']) ? intval($_POST['goods_id']) :0;
if(!empty($user_id) && !empty($goods_id)) {
$arr= explode(',',$goods_id);
array_unshift($arr,$user_id);
$rm_result= call_user_func_array(array($this->redis_obj,"hDel"),$arr);
if($rm_result>=0) {
$this-> ajaxReturn(array('code'=>0,'msg'=>'remove success'));
}
}else{
$this- >ajaxReturn(array('code'=>1,'msg'=>'param is empty'));
}
}
// Shopping cart list
public functioncart_list()
{
$user_id= intval($_POST['user_id']) ? intval($ _POST['user_id']) :0;
if(!empty($user_id)) {
$goods_list=$this->redis_obj->hGetAll($user_id);
$this->ajaxReturn(array('code'=>0,'list'=>$goods_list));
}else{
$ this->ajaxReturn(array('code'=>1,'msg'=>'param is empty'));
}
}
//Set the quantity of a product
public functionedit_goods_num()
{
}
}
The above is the detailed content of Simple operation of hash data type (implementation of shopping cart case). For more information, please follow other related articles on the PHP Chinese website!