query 查詢類標簽(用于前端遍歷)
創(chuàng)新互聯(lián)網絡公司擁有10年的成都網站開發(fā)建設經驗,近千家客戶的共同信賴。提供成都網站設計、網站建設、外貿網站建設、網站開發(fā)、網站定制、買友情鏈接、建網站、網站搭建、響應式網站建設、網頁設計師打造企業(yè)風格,提供周到的售前咨詢和貼心的售后服務
實例:
{query:name=goods}
{$item['name']}<br/>
{/query}
本人實際開發(fā)中書寫代碼應用:
<php // 下面代碼是放在html頁面的 {query:name=user fields=username where=id eq $user_id} {$item['username']} {/query}的購物清單</td> ?>
分頁:
{set:$page=IReq::get('page')==null?1:IReq::get('page');}//定義分頁變量
{query:name=goods page=$page pagesize=5}
{$key}:{$item['name']}<br/>
{/query}
{$query->getPageBar()} //調用分頁方法
數(shù)據(jù)庫讀取和寫入:
IQuery類:
IQuery 提供了很豐富的屬性和功能,通過簡單的屬性配置,就可以實現(xiàn)很多的SQL 查詢功能,比如我們要查詢商
品表(goods)里面的id=10 的商品,則:
$goodsDB = new IQuery(‘goods’);
$goodsDB->where = “id = 10”;
$goodsData = $goodsDB->find();
. find()就是執(zhí)行查詢最終數(shù)據(jù)的一個接口。
創(chuàng)建好IQuery 對象以后,就可以設置各種類屬性來組合查詢數(shù)據(jù)了。
主要屬性列表如下:
屬性名稱數(shù)據(jù)類型說明
fields String 可選默認* 讀取表的字段數(shù)據(jù)
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 條讀取指定數(shù)量的條數(shù)
page Int 可選默認無設置分頁。設置后IQuery 類庫增加paging 屬性(分頁類)
pagesize Int 可選默認20 條每個分頁顯示的數(shù)據(jù)量,設置page 屬性才有意義
pagelength Int 可選默認10 頁顯示多少頁數(shù),設置page 屬性才有意義
cache String 可選memcache, 緩存查詢結果提高效率,降低數(shù)據(jù)庫壓力。填寫緩存的模式,前提是您的系統(tǒng)必須支持iWebShop 緩存技術
debug Int 可選默認0 關閉;1 開啟調試SQL 語句,系統(tǒng)會自動輸出完整的SQL 原生態(tài)語句
本人實際開發(fā)中書寫代碼應用
查詢:
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類:
數(shù)據(jù)庫寫入一般用IModel 類,目前支持update(更新),add(添加),del(刪除),dropTable(卸載
表),createTable(創(chuàng)建表)。
一般使用都是通過創(chuàng)建new IModel(表名)對象來創(chuàng)建的數(shù)據(jù)庫實例,然后調用setData()接口進行數(shù)據(jù)設
置。
比如要更新goods 表的price 字段,那么就是:
$goodsDB = new IModel(‘goods’);
$goodsDB->setData(array(‘price’ => 1000));
$goodsDB->update(‘id = 2’);
方法名字數(shù)據(jù)類型說明
update($where,
$except=array()
)
$where:string 更新條件
$except:array 特殊表達式
字段(非字符串類型)
更新記錄
通過$this->setData($array); $array(字段=>更新數(shù)據(jù))
表更新字段對應數(shù)據(jù)關系
add() 添加記錄
通過$this->setData($array); $array(字段=>添加數(shù)據(jù))
表添加記錄對應數(shù)據(jù)關系
del($where) $where:string 刪除條件刪除記錄
把滿足$where 條件的記錄都刪除
dropTable() 卸載表
把當前IModel 實例對應的表刪除
createTable() 創(chuàng)建表
創(chuàng)建當前IModel 實例對應的表
通過$this->setData($array); 設置創(chuàng)建表元素(多維數(shù)組)
$array = array(
"column" => 字段配置array("type" => 數(shù)據(jù)類型,"default"
=> 默認值,"comment" => 字段注釋,"auto_increment" =>
數(shù)值自增長)
"comment"=> 表注釋
"index" => 表索引array("索引類
型:PRIMARY,KEY,UNIQUE" => "字段名稱")
本人實際開發(fā)中書寫代碼應用:
添加:
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'); } 刪除:(注意:軟刪除,數(shù)據(jù)庫保留) 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('請選擇要刪除的數(shù)據(jù)'); } $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('請選擇要恢復的數(shù)據(jù)'); } $this->redirect("supplier_list"); }
原生態(tài)的SQL 可以用IDBFactory::getDB()->query($sql);此時可以直接寫原生態(tài)的SQL 語句,但是要注意
SQL 語句中把表前綴增加上,因為IDBFactory 不會對$sql 有任何的修改,直接100%原樣輸送給MySQL,當要執(zhí)
行一些特殊的,復雜的SQL 可以使用此方法。
本人實際開發(fā)中書寫代碼應用:
$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);
分享文章:iwebshop框架用到的幾種常用sql處理
瀏覽地址:http://chinadenli.net/article38/pipdpp.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供品牌網站設計、建站公司、網站導航、電子商務、微信小程序、網站維護
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)