在数据库中 我们经常使用 1,2,3,4 来存储数据
但是我们查询的时候 只拿到 1 还有其他条件 这样查询就比较困难 但是用 FIND_IN_SET 就比较便捷
用法如下
数据库结构
CREATE TABLE group_order
(
id
int(11) unsigned NOT NULL AUTO_INCREMENT,
gorup_num
int(10) DEFAULT ‘2’ COMMENT ‘团购人数’,
user_id
varchar(255) DEFAULT NULL COMMENT ‘团购用户id(用,分割)’,
createtime
int(10) DEFAULT NULL COMMENT ‘创建时间’,
current_num
int(10) DEFAULT NULL COMMENT ‘当前人数’,
end_time
int(11) DEFAULT NULL COMMENT ‘结束时间’,
is_succsee
int(1) DEFAULT ‘0’ COMMENT ‘是否成功’,
curriculum_id
int(10) DEFAULT NULL COMMENT ‘课程ID’,
gorup_order
varchar(255) DEFAULT NULL COMMENT ‘订单id(用,分割)’,
PRIMARY KEY (id
) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT=‘团购课程ID’;
//当要获取的user_id 为1 时 数据库中为 1,2,3,4
$user_id = 1;
$where['is_succsee'] = 0;
$where['end_time'] = array('gt',time());
$find = db('group_order')->where($where)->where('FIND_IN_SET(:id,user_id)',['id' => $user_id])->order('createtime desc')->find();
如果在where数组当中运用 需要这样表达
$id = 1;
//ids 为 1,2,3,4
$wheres[]=['exp',Db::raw('FIND_IN_SET('.$id.',ids)')];