or 注册

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

系统模型提供了一系列快捷操作的方法, 可以大幅提高开发效率。 目前已提供的方法主要有 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);
  1. 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);
  1. 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;
  1. 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 会员记录
  1. Or rder 方法:指定排序的参数,返回模型实例本身,如:
$model->table('member')->order('member_id desc')->limit(4)->select();
也可指定多个字段进行排序,如:
$model->table('member')->order('member_id desc,member_sex asc')->select();
  1. 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();
  1. d Field 方法:指定要查询的字段,不使用 field 方法时,默认查询所有字段,如:
$model->field('member_id,member_name')->select();
  1. On n 方法:指定多表联查时的字段关系。
  2. 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


81 个评论

. 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
' )
难得一见的好帖
很不错
不错不错
好帖就是要顶
很好哦
不错不错
很不错
说的非常好
真心顶
好帖就是要顶
楼主是超人
不错不错
好帖就是要顶
LZ真是人才
很不错
不错不错
楼主是超人
真心顶
说的非常好
好帖就是要顶
难得一见的好帖
说的非常好
很好哦
好帖就是要顶
真心顶
很好哦
楼主是超人
LZ真是人才
好帖就是要顶
不错不错
很不错
楼主是超人
真心顶
好帖就是要顶
不错不错
LZ真是人才
楼主是超人
很好哦
说的非常好
好帖就是要顶
顶顶多好
说的非常好
很好哦
好帖就是要顶
LZ真是人才
LZ真是人才
不错不错
很好哦
说的非常好
楼主是超人
很好哦
难得一见的好帖
好帖就是要顶
顶顶多好
楼主是超人
LZ真是人才
楼主是超人
顶顶多好
不错不错
说的非常好
顶顶多好
不错不错
难得一见的好帖
很好哦
很不错
楼主是超人
LZ真是人才
真心顶
很不错
顶顶多好
难得一见的好帖
顶顶多好
楼主是超人
很好哦
很不错
不错不错
好帖就是要顶
很不错
很好哦
顶顶多好

要回复文章请先登录注册