iwebshop框架用到的几种常用sql处理
admin
2023-05-26 01:01:40
0

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);


相关内容

热门资讯

中国首例对外贸易国家安全调查 商务部新闻发言人就对相关进口打印复印办公设备发起对外贸易国家安全调查答记者问。问:我们关注到商务部发...
商务部:对美国合规性测试公司采... 中华人民共和国商务部令二〇二六年 第3号经国家反外国制裁工作协调机制批准,现公布《关于对美国合规性测...
神二十一号乘组返回后首次与记者... 今天(8月5日)下午,神舟二十一号航天员乘组与记者见面会在北京航天城举行。这是神舟二十一号航天员张陆...
将办公软件变为娱乐道具 “乱讲... 将办公软件变为娱乐道具 用轻松幽默甚至“无厘头”方式解读荒诞主题 “乱讲PPT”解锁社交新方式 PP...
三星电子公布CXL 3.2内存... IT之家 8 月 5 日消息,作为三星电子 FMS 2026 峰会活动的一部分,该企业在官网上公布了...
超擎数智与香港中文大学(深圳)... 【科技快报网】2026年8月3日,超擎数智与香港中文大学(深圳)正式签署联合实验室协议,共同成立港中...
男子突发性耳聋,元凶竟是“电钻... “池塘边的榕树上,知了在声声叫着夏天……”盛夏蝉鸣,本是很多人记忆中,夏天标配的背景音。 但是,最近...
合物660|为都市成年人打造一... 8月7日至9日,合物660文创园将在户外大草坪举办一场以“大人放假日”(BigKidDays)为主题...
日本机器人失落三十年 ► 文 观察者网心智观察所 东京的日本科学未来馆里,今天依然摆着一台已经“退休”的机器人。直到20...
长城H10汽车与小米CarIo... IT之家 8 月 5 日消息,长城汽车今日宣布,长城 H10 与小米 CarIoT 实现跨生态互通,...