ci框架 model 层封装问题, 急急急!
比如一个表有name , id ,ageselectname,agefromuser whereage = 5name like '%张%' order by id desclimit 0 10
如果要实现这类 语句 想变成 下面形式 该怎么封装 (成员方法名叫getAllByWhere)
SELECT {$fields} FROM {$this->_table} WHERE{$where} LIMIT {$offset}, {$num}
打个比方
public function getSomeFieldsByWhere($where, $fields, $num, $offset){
}
如果用 Active Record 中间怎么写,需要防注入, 谢谢了 本帖最后由 喜剧之王 于 2016-9-9 09:13 编辑
我在想一个问题 如果你要写那么多参数,还封装成方法干什么? 链式查询不就是封装好的方法么,
public function page($data = array()){
if (!empty($array['where'])) {
$this->db->where($array['where']);
}
if (!empty($array['like'])) {
$this->db->like($array['like']);
}
}
这样子就可以哈,你只需要在DATA里穿你需要的参数就行,然后MODEL做个判断,
这样子 你只需要 page(array('where'=>array(1=>1))) 随你传几个参数 都能用, 有些需要自己改良一下~
张三的歌 发表于 2016-8-25 16:07
这样是可以了,那要是再加上like , order, group 这三的话,参数会增加大概6个,目前是4个,加起来是10个.... ...
一個一個參數丟,比較偏功能取向
就是我這個方法,要達到一個目的,例如 : 登入檢查
你也可以彈性取向,方法直接承接一個大的 $data
然後 Model 裡面再檢查這個 $data 有沒有某個 key 值,是不是陣列等等
當然還有另外一種是資料表取向
一個 Model 管一個資料表
使用公域 $this->table 來取值
調用給該 Model 各個方法使用
程式語言有很多種設計模式
可以去多看看,你會發現不一樣的世界
public function getSomeFieldsByWhere($where, $fields, $num, $offset){
$this->db->select($fields)
->where($where)
->limit($offset, $num)
->get($this->_table);
}
这样不就行了么 你这么写是不是太麻烦 Aloghli 发表于 2016-8-20 12:05
你这么写是不是太麻烦
有什么好的写法吗,能写个样子吗,谢谢了:D 张三的歌 发表于 2016-8-22 09:12
有什么好的写法吗,能写个样子吗,谢谢了
你去下载MY_Model这是已经封装好的 Aloghli 发表于 2016-8-22 09:19
你去下载MY_Model这是已经封装好的
在哪里下载呀 张三的歌 发表于 2016-8-22 14:47
在哪里下载呀
github Aloghli 发表于 2016-8-22 15:44
github
具体的 github 的地址有没有呀,谢谢了 Aloghli 发表于 2016-8-22 15:44
github
具体的 github 的地址有没有呀,谢谢了 为什么不用链式查询呢?
页:
[1]
2