设为首页 收藏本站
查看: 1053|回复: 0

[经验分享] iwebshop框架用到的几种常用sql处理

[复制链接]

尚未签到

发表于 2018-10-20 11:44:01 | 显示全部楼层 |阅读模式
  query 查询类标签(用于前端遍历)
  实例:
  {query:name=goods}
  {$item['name']}
  {/query}
  本人实际开发中书写代码应用

  分页:
  {set:$page=IReq::get('page')==null?1:IReq::get('page');}//定义分页变量
  {query:name=goods page=$page pagesize=5}
  {$key}:{$item['name']}
  {/query}
  {$query->getPageBar()} //调用分页方法
  数据库读取和写入:
  IQuery类:
  IQuery 提供了很丰富的属性和功能,通过简单的属性配置,就可以实现很多的SQL 查询功能,比如我们要查询商
  品表(goods)里面的id=10 的商品,则:
  $goodsDB = new IQuery(‘goods’);
  $goodsDB->where = “id = 10”;
  $goodsData = $goodsDB->find();
  . find()就是执行查询最终数据的一个接口。
  创建好IQuery 对象以后,就可以设置各种类属性来组合查询数据了。
  主要属性列表如下:
  属性名称数据类型说明
  fields String 可选默认* 读取表的字段数据
  where String 可选默认无查询条件
  join String 可选默认无表连接操作,比如:
  $db = new IQuery(‘goods as g’);
  $db->join=”left join products as p on g.id = p.goods_id”;
  $db->find();
  group String 可选默认无表分组操作,比如:
  $db = new IQuery(‘goods as g’);
  $db->group = “price”;
  $db->find();
  having String 可选默认无表分组结果的筛选,设置group 属性才有意义
  order String 可选默认无表排序字段
  limit Int 可选默认20 条读取指定数量的条数
  page Int 可选默认无设置分页。设置后IQuery 类库增加paging 属性(分页类)
  pagesize Int 可选默认20 条每个分页显示的数据量,设置page 属性才有意义
  pagelength Int 可选默认10 页显示多少页数,设置page 属性才有意义
  cache String 可选memcache, 缓存查询结果提高效率,降低数据库压力。填写缓存的模式,前提是您的系统必须支持iWebShop 缓存技术
  debug Int 可选默认0 关闭;1 开启调试SQL 语句,系统会自动输出完整的SQL 原生态语句
  本人实际开发中书写代码应用
  查询:
function give_goods_list(){  
   $giveaway_Obj = new IQuery('giveaway');
  
   $giveaway_Obj -> where = "is_del = 0";
  
   $giveaway_infos = $giveaway_Obj -> find();
  
   $this->data = $giveaway_infos;
  
   $this->redirect('give_goods_list');
  
}
  IModel类:
  数据库写入一般用IModel 类,目前支持update(更新),add(添加),del(删除),dropTable(卸载
  表),createTable(创建表)。
  一般使用都是通过创建new IModel(表名)对象来创建的数据库实例,然后调用setData()接口进行数据设
  置。
  比如要更新goods 表的price 字段,那么就是:
  $goodsDB = new IModel(‘goods’);
  $goodsDB->setData(array(‘price’ => 1000));
  $goodsDB->update(‘id = 2’);
  方法名字数据类型说明
  update($where,
  $except=array()
  )
  $where:string 更新条件
  $except:array 特殊表达式
  字段(非字符串类型)
  更新记录
  通过$this->setData($array); $array(字段=>更新数据)
  表更新字段对应数据关系
  add() 添加记录
  通过$this->setData($array); $array(字段=>添加数据)
  表添加记录对应数据关系
  del($where) $where:string 删除条件删除记录
  把满足$where 条件的记录都删除
  dropTable() 卸载表
  把当前IModel 实例对应的表删除
  createTable() 创建表
  创建当前IModel 实例对应的表
  通过$this->setData($array); 设置创建表元素(多维数组)
  $array = array(
  "column" => 字段配置array("type" => 数据类型,"default"
  => 默认值,"comment" => 字段注释,"auto_increment" =>
  数值自增长)
  "comment"=> 表注释
  "index" => 表索引array("索引类
  型:PRIMARY,KEY,UNIQUE" => "字段名称")
  本人实际开发中书写代码应用
  添加:
function supplier_edit_add()  
{
  
   $id = IFilter::act(IReq::get('id'),'int');
  
   $company   = IFilter::act(IReq::get('firm_name'));
  
   $address = IFilter::act(IReq::get('address'));
  
   $pname  = IFilter::act(IReq::get('name'));
  
   $mobile = IFilter::act(IReq::get('mobile'));
  
   $phone  = IFilter::act(IReq::get('telephone'));
  
   $img = IFilter::act(IReq::get('img'));
  
   $account  = IFilter::act(IReq::get('account_num'));
  
       $bank   = IFilter::act(IReq::get('bank_name'));
  
   $province = IFilter::act(IReq::get('province'),'int');
  
   $city    = IFilter::act(IReq::get('city'),'int');
  
   $area     = IFilter::act(IReq::get('area'),'int');
  
   $_POST['area'] = "";
  
   if($province && $city && $area)
  
   {
  
      $_POST['area'] = array($province,$city,$area);
  
   }
  
   $user_id =$this->admin['admin_id'];
  
   $stock  = new IModel('supplier_list');
  
   $stock_Init =  array(
  
      'firm_name'    =>   $company,
  
      'area'         =>   $_POST['area'] ? ",".join(",",$_POST['area'])."," : "",
  
       'address'      =>   $address,
  
      'name'         =>   $pname,
  
      'mobile'       =>   $mobile,
  
      'telephone'    =>   $phone,
  
      'img'          =>   $img,
  
      'account_num'  =>  $account,
  
      'bank_name'    =>  $bank,
  
       'create_time'  =>   date('Y-m-d H:i:s',time()),
  
       'admin_id'     =>   $user_id
  
   );
  
   if($id){
  
      $stock->setData($stock_Init);
  
      $stock->update('id = '.$id);
  
   }else{
  
      $stock->setData($stock_Init);
  
       $stock->add();
  
   }
  

  
   $this->redirect('supplier_list');
  
}
  
删除:(注意:软删除,数据库保留)
  
function supplier_list_del(){
  
   $id = IFilter::act(IReq::get('id'),'int');
  
   $stock = new IModel('supplier_list');
  
   $stock->setData(array('is_del'=>1));
  
   if($id)
  
   {
  
      $stock->update(Util::joinStr($id));
  
   }else{
  
      die('请选择要删除的数据');
  
   }
  
   $this->redirect("supplier_list");
  
}
  更新:
function suppliet_list_restore(){  
   $id = IFilter::act(IReq::get('id'),'int');
  
   //生成goods对象
  
   $stock = new IModel('supplier_list');
  
   $stock->setData(array('is_del'=>0));
  
   if($id)
  
   {
  
      $stock->update(Util::joinStr($id));
  
   }
  
   else
  
   {
  
      die('请选择要恢复的数据');
  
   }
  

  
   $this->redirect("supplier_list");
  
}
  原生态的SQL 可以用IDBFactory::getDB()->query($sql);此时可以直接写原生态的SQL 语句,但是要注意
  SQL 语句中把表前缀增加上,因为IDBFactory 不会对$sql 有任何的修改,直接100%原样输送给mysql,当要执
  行一些特殊的,复杂的SQL 可以使用此方法。
  本人实际开发中书写代码应用
$sql_class = "SELECT zce.category_id,gs.brand_id,zc.parent_id from (zqwy_goods as gs left join zqwy_category_extend as zce on gs.id = zce.goods_id) left join  
                            zqwy_category as zc on zce.category_id = zc.id WHERE gs.id =".$v['goods_id'].";";
  
$goods_class = IDBFactory::getDB()->query($sql_class);



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-624028-1-1.html 上篇帖子: SQLserver运维必备:T-SQL语句简介 下篇帖子: 第九单元 oppenssh-server
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表