您好,登錄后才能下訂單哦!
query 查詢類標簽(用于前端遍歷)
實例:
{query:name=goods}
{$item['name']}<br/>
{/query}
本人實際開發中書寫代碼應用:
<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()} //調用分頁方法
數據庫讀取和寫入:
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);
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。