shopnc b2b2c 内置方法(开发指南)

浏览
3074
回复
82
收藏
0
点赞
0

楼主

2017-4-23 08:54:02
系统模型提供了一系列快捷操作的方法, 可以大幅提高开发效率。 目前已提供的方法主要有 select、 find、 limit、table、order、where、field、on、join、count、page、attr、showpage、insert、insertAll、delete、update、group、 having、 distinct、 clear、 query、 execute、 sum、 avg、 max、 min、 setInc、 setDec、 和动态方法 getby_、getfby_。
1. S St elect 方法:取得查询信息,返回结果为数组,如果未找到数据返回 null,select 一般在 where,order,tabale
等方法的后面,作为最后一个方法来使用。如:
$model = Model('member');
// 查询会员表全部信息
$model->select();
//取得性别为 1 的会员列表信息, 注意:select 方法需要在连贯操作中的最后一步出现
$model->where(array('member_sex'=>1))->select();
Select 方法可以传入主键 ID,系统会自动查找对应信息,如:
// 查询主键 ID 为 5 的会员信息
$model = Model('member');
$model->select(5);
2. F Fd ind 方法:取得一条记录信息,find 同 select 一样,一般作为最后一个方法来使用,如:
$model = Model('member');
// 查询 ID 为 5 的会员信息
$model->where(array('member_id'=>5))->find();
Find 方法可以传入主键 ID,系统会自动查找对应信息,如:
$model = Model('member');
// 查询主键 ID 为 5 的会员信息
$model->find(5);
3. L Lt imit 方法:指定返回多少条记录数,
$model = Model('member');
$model->limit(4)->select(); // 等同于 SELECT * FROM member LIMIT 4;
$model->limit('4,10')->select(); // 等同于 SELECT * FROM member LIMIT 4,10;
4. T Te able 方法:指定要操作的数据表名称,返回模型实例本身,如:
$model = Model();
// 查询主键 ID 为 5 的会员信息
$model->table('member')->find(5);
多表联合查询时,可以传入多个表名称,如:
// 内链接查询 member 和 store 表,并返回前两条记录
$on = 'store.member_id=member.member_id';
$model->table('member,store')->join('inner')->on($on)->limit(2)->select();
如果实例化时指定了表名,则可以不使用 table 方法指定表名,如:
$model = Model('member');
$model ->limit(4)->select(); // 查询前条 4 会员记录
5. Or rder 方法:指定排序的参数,返回模型实例本身,如:
$model->table('member')->order('member_id desc')->limit(4)->select();
也可指定多个字段进行排序,如:
$model->table('member')->order('member_id desc,member_sex asc')->select();
6. We here 方法:指定 sql 执行的条件,返回模型实例本身,入可传入数组或字段串,如:
//传入数组条件
$model->where(array('member_id'=>5))->find();
//传入字符串条件
$model->where(array('member_id=5'))->find();
//传入多表关联条件
$model->table('member,store');
$model->where('store.store_id=member.store_id and store.store_id=2')->find();
7. d Field 方法:指定要查询的字段,不使用 field 方法时,默认查询所有字段,如:
$model->field('member_id,member_name')->select();
8. On n 方法:指定多表联查时的字段关系。
9. J Jn oin 方法:指定多表联查时的链接类型, 支持内链接、左链接(默认)、右链接。On 与 join 方法需要一起使用,
如:
$model = Model();
//内链接查询 member 和 store 表,返回会员 ID 为 6 的记录信息
$field = 'member.member_name,store.store_name';
$on = 'store.member_id=member.member_id';
$model->table('member,store')->field($field);
$model->join('inner')->on($on)->where(array('member.member_id'=>6))->find();
三表关联查询如下:
$model = Model();
//内链接查询 member 和 store,然后左链接 store_class,查询会员 ID 为 6 的记录信息
$field = 'member.member_name,store.store_name,store_class.sc_name';
$on = 'store.member_id=member.member_id,store.sc_id=store_class.sc_id';
$model->table('member,store,store_class')->field($field);
$model->join('inner,left')->on($on)->where('member.member_id=6')->find();
. 10. C Ct ount 方法:返回记录总数量,如:
$model = Model('member');
//返回会员表总行数
$model->count();
//返回会员 ID 大于 15 的记录数
$model->where('member_id>15')->count();
. 11. e Page 方法:实现记录分页,格式为 page(每页显示数,总记录数),总记录数可以人为指定,也可以为空让系
统自动去计算,如:
//每页显示 10 条数据
$model = Model('member');
//系统会跟据每页显示数和已知属性自动计算总记录数
$model->page(10)->order('member_id desc')->select();
//每页显示 10 条数据,指定总记录为 1000 条,系统将不再计算总记录数
$model->page(10, 1000)->order('member_id desc')->select();
注意:如果同时使用 where 和 page 方法时,where 方法要在 page 方法前面使用,如:
$model->where('id=1')->page(10)->select(); //正确
$model->page(10)->where('id=1')->select(); //错误
. 12. e Showpage 方法:返回分页超链接,结合 page 方法完成分页,如:
//显示上一页下一下链接
$model->showpage(1); //样式 1
$model->showpage(2); //样式 2(默认)
. 13. t Insert 方法:插入单行数据,并返回最新插入的主键 ID,如果插入失败返回 false,完整格式如下:
insert($data='', $replace=false, $options=array())
//向 link 表插入数据,并返回最新主键 ID
$model = Model('table');
$data = array(
'link_title'=>'ShopNC',
'link_url'=>'',
'link_sort'=>32,
);
$model->insert($data);
Insert 方法支持延迟插入,加入$options 参数即可,如:
$model->insert($data,false,array('priority'=>'DELAYED'));
Insert 方法同样支持 replace 操作,将第二个参数设置为 true 即可,如:
$model = Model();
$data = array(
'link_title'=>'ShopNC',
'link_url'=>'',
'link_sort'=>32,
'link_id'=>30
);
$model->table('link')->insert($data,true);
. 14. l InsertAll 方法:实现批量插入数据,如:
$model = Model('link');
$data = array(
array(
'link_title'=>'新浪',
'link_url'=>'',
'link_sort'=>32,
),
array(
'link_title'=>'百度',
'link_url'=>'',
'link_sort'=>30,
)
);
$model->insertAll($data);
. 15. e Delete 方法:删除记录,如:
$model = Model('link');
//删除主键为 5 的记录
$model->delete(5);
//或者
$model->where(array('link_id'=>5))->delete();
. 16. e Update 方法:数据更新,如果更新内容含有主键下标,自动以该主键为更新条件,如:
$model = Model();
//更新主键(link_id)为 37 的记录信息
$data = array(
'link_title'=>'ShopNC',
'link_url'=>'',
'link_sort'=>32,
'link_id'=>37
);
$model->table('link')->update($data);
//指定更新条件
$data = array(
'link_title'=>'ShopNC',
'link_url'=>'',
'link_sort'=>32
);
$model->table('link')->where(array('link_id'=>37))->update($data);
. 17. p Group 方法:实现分组功能,如:
//查询每个店铺发布商品的数量
$model = Model('goods');
$model->field('store_id,count(*) as count')->group('store_id')->select();
. 18. g Having 方法:结合 group 方法,进行条件过滤,传入参数为字符串形式,如:
//查找发布商品超过 500 的店铺 ID
$model = Model('goods');
$model->field('store_id,count(*) as nc_count')->group('store_id')->having('nc_count>500')->select();
. 19. t Distinct 方法:可以去除列中相同的值,distinct 只接受一个参数值 true,如果不需要重复值筛选,不使用该方
法即可。
//查找拥有商品的店铺主键
$model = Model();
$model->table('goods')->field('store_id')->distinct(true)->select();
. 20. r Clear 方法:清空单个表中的内容,返回 true/false,如:
//清空 link 表
$model = Model();
$model->table('link')->clear();
. 21.  Qe uery/execute 方法,两个方法均用于直接执行 SQL 语句,query 方法用于查询,execute 方法用于更新、
写入和删除操作,如:
Model()->query('SELECT * FROM `shopnc_member` LIMIT 10');
Model()->execute('UPDATE `shopnc_goods` SET goods_click=1000 WHERE goods_id=2');
. 22. n Sum/Avg/Max/Min 方法:求和、求平均值、取最大值、取最小值,如:
$model = Model();
//返回所有商品总价格之和
$model->table('goods')->sum('price');
//上面等同于 SQL:SELECT SUM(price) AS nc_sum FROM `goods`
//取商品表中所有商品的平均价格
$model->table('goods')->avg('price');
//以上等同于 SQL:SELECT AVG(price) AS nc_avg FROM `goods` LIMIT 1
//取商品的最高价
$model->table('goods')->max('price');
//以上等同于 SQL:SELECT MAX(price) AS nc_max FROM `goods` LIMIT 1
//取商品的最低价
$model->table('goods')->min('price');
//以上等同于 SQL:SELECT MIN(price) AS nc_min FROM `goods` LIMIT 1


点评

推荐: 5.0 可用: 5.0
服务: 5.0
推荐: 5 可用: 5 服务: 5
赞一个  发表于 2017-4-23 09:04
回复

使用道具 举报

回复

跳转到指定楼层
guju 楼主 发表于 2017-4-23 08:54:17 显示全部楼层
. 23.  自增/ / 自减:系统使用 setInc 和 setDec 完成自增和自减,示例如下:
$model = Model();
//使主键值为 2 的商品点击量加 1000
$model->table('goods')->where(array('goods_id'=>2))->setInc('goods_click',1000);
//等同于:UPDATE `goods` SET goods_click=goods_click+3 WHERE ( goods_id = '2' )
//结合 exp 参数,使用该商品点击量减 1000
$model = Model('goods');
$data = array(
'goods_id' => 2,
'goods_click' =>array('exp','goods_click-1000'));
$model->update($data);
//等同于:UPDATE `goods` SET goods_click=goods_click-1000 WHERE ( goods_id = '2' )
. 24.  动态方法:系统内置 getby_和 getfby_两个动态方法,格式如下:
getby_ + 字段名(字段值)
getfby_ + 条件字段名(条件字段值,返回字段名)
结合示例来说明动态方法的使用
$model = Model('member');
//使用 getby_动态方法,取得 member_name 为 kevin 的会员信息
$model->getby_member_name('kevin');
//等同于 SQL:SELECT * FROM `member` WHERE ( member_name = 'kevin' ) LIMIT 1
//使用 getfby_方法,取得 member_id 为 6 的会员名
$a = $model->getfby_member_id(6,'member_name'); //返回 kevin
//等同于 SQL:SELECT member_name FROM `shopnc_member` WHERE ( member_id = '6' ) LIMIT 1
. 25.  设置 L SQL  执行优先级:系统支持使用 SQL 关键字 LOW_PRIORITY、DELAYED、HIGH_PRIORITY,格式如下:
attr(关键字)
结合示例来说明动态方法的使用
$model = Model('goods');
$model->where(array('goods_id' => 100))->attr('LOW_PRIORITY');
$model->update(array('goods_click' =>array('exp','goods_click+1')));
//等同于
//UPDATE LOW_PRIORITY `shopnc_goods` SET goods_click=goods_click+1 WHERE ( goods_id = '100
' )
回复 支持 反对

使用道具 举报

cn2rkpiv 发表于 2017-4-25 17:04:25 显示全部楼层
很不错
回复 支持 反对

使用道具 举报

cn2rkpiv 发表于 2017-4-25 17:18:12 显示全部楼层
好帖就是要顶
回复 支持 反对

使用道具 举报

wktgc858 发表于 2017-4-25 16:45:02 显示全部楼层
难得一见的好帖
回复 支持 反对

使用道具 举报

zqfmz 发表于 2017-4-25 17:25:21 显示全部楼层
很好哦
回复 支持 反对

使用道具 举报

j0vqrh5b 发表于 2017-4-25 17:06:59 显示全部楼层
不错不错
回复 支持 反对

使用道具 举报

sg_5cplg 发表于 2017-4-26 12:18:50 显示全部楼层
很不错
回复 支持 反对

使用道具 举报

9q8lp 发表于 2017-4-26 12:43:52 显示全部楼层
好帖就是要顶
回复 支持 反对

使用道具 举报

wktgc858 发表于 2017-4-26 12:41:23 显示全部楼层
真心顶
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫描二维码下载APP
快速回复 返回列表