欢迎各位兄弟 发布技术文章
这里的技术是共享的
$User->where('status=1')->order('create_time')->limit(10)->select();复制代码$User->order('create_time')->limit(10)->where('status=1')->select();复制代码$User->where('id=1')->field('id,name,email')->find(); $User->where('status=1 and id=1')->delete();复制代码| 方法 | 作用 | 支持的参数类型 |
|---|---|---|
| where | 用于查询或者更新条件的定义 | 字符串、数组和对象 |
| table | 用于定义要操作的数据表名称 | 字符串和数组 |
| alias | 用于给当前数据表定义别名 | 字符串 |
| data | 用于新增或者更新数据之前的数据对象赋值 | 数组和对象 |
| field | 用于定义要查询的字段(支持字段排除) | 字符串和数组 |
| order | 用于对结果排序 | 字符串和数组 |
| limit | 用于限制查询结果数量 | 字符串和数字 |
| page | 用于查询分页(内部会转换成limit) | 字符串和数字 |
| group | 用于对查询的group支持 | 字符串 |
| having | 用于对查询的having支持 | 字符串 |
| join* | 用于对查询的join支持 | 字符串和数组 |
| union* | 用于对查询的union支持 | 字符串、数组和对象 |
| distinct | 用于查询的distinct支持 | 布尔值 |
| lock | 用于数据库的锁机制 | 布尔值 |
| cache | 用于查询缓存 | 支持多个参数(以后在缓存部分再详细描述) |
| relation | 用于关联查询(需要关联模型扩展支持) | 字符串 |
| validate | 用于数据自动验证 | 数组 |
| auto | 用于数据自动完成 | 数组 |
| filter | 用于数据过滤 | 字符串 |
| scope* | 用于命名范围 | 字符串、数组 |
| where 用于查询或者更新条件的定义 | |
|---|---|
| 用法 | where($where) |
| 参数 | where(必须):查询或者操作条件,支持字符串、数组和对象 |
| 返回值 | 当前模型实例 |
| 备注 | 如果不调用where方法,默认不会执行更新和删除操作 |
| table 定义要操作的数据表名称,动态改变当前操作的数据表名称,需要写数据表的全名,包含前缀,可以使用别名和跨库操作 | |
|---|---|
| 用法 | table($table) |
| 参数 | table(必须):数据表名称,支持操作多个表,支持字符串、数组和对象 |
| 返回值 | 当前模型实例 |
| 备注 | 如果不调用table方法,会自动获取模型对应或者定义的数据表 |
$Model->Table('think_user user')->where('status>1')->select();复制代码$Model->Table('db_name.think_user user')->where('status>1')->select();复制代码$Model->Table(array('think_user'=>'user','think_group'=>'group'))->where('status>1')->select();复制代码| data 可以用于新增或者保存数据之前的数据对象赋值 | |
|---|---|
| 用法 | data($data) |
| 参数 | data(必须):数据,支持数组和对象 |
| 返回值 | 当前模型实例 |
| 备注 | 如果不调用data方法,则会取当前的数据对象或者传入add和save的数据 |
$Model->data($data)->add();$Model->data($data)->where('id=3')->save();复制代码$this->find(3);$data = $this->data();复制代码| field 用于定义要查询的字段 | |
|---|---|
| 用法 | field($field,$except=false) |
| 参数 | field(必须):字段名,支持字符串和数组,支持指定字段别名;如果为true则表示显式或者数据表的所有字段。 except(可选):是否排除,默认为false,如果为true表示定义的字段为数据表中排除field参数定义之外的所有字段。 |
| 返回值 | 当前模型实例 |
| 备注 | 如果不调用field方法,则默认返回所有字段,和field('*')等效 |
$Model->field('id,nickname as name')->select();$Model->field(array('id','nickname'=>'name'))->select();复制代码$Model->field(true)->select();复制代码$Model->field('status',true)->select();复制代码| order 用于对操作结果排序 | |
|---|---|
| 用法 | order($order) |
| 参数 | order(必须):排序的字段名,支持字符串和数组,支持多个字段排序 |
| 返回值 | 当前模型实例 |
| 备注 | 如果不调用order方法,按照数据库的默认规则 |
order('id desc') 复制代码order('status desc,id asc')复制代码order(array('status'=>'desc','id'))复制代码| limit 用于定义要查询的结果限制(支持所有的数据库类型) | |
|---|---|
| 用法 | limit($limit) |
| 参数 | limit(必须):限制数量,支持字符串 |
| 返回值 | 当前模型实例 |
| 备注 | 如果不调用limit方法,则表示没有限制 |
limit('1,10')复制代码limit(1,10)复制代码limit('10')复制代码limit('0,10')复制代码| page 用于定义要查询的数据分页 | |
|---|---|
| 用法 | page($page) |
| 参数 | page(必须):分页,支持字符串 |
| 返回值 | 当前模型实例 |
| 备注 | 无 |
Page('page[,listRows]')复制代码Page('2,10')复制代码limit(25)->page(3);复制代码$this->page(5,25)->select();复制代码$this->page('5,25')->select();复制代码| group 用于数据库的group查询支持 | |
|---|---|
| 用法 | group($group) |
| 参数 | group(必须):group的字段名,支持字符串 |
| 返回值 | 当前模型实例 |
| 备注 | 无 |
group('user_id')复制代码| having 用于数据库的having查询支持 | |
|---|---|
| 用法 | having($having) |
| 参数 | having(必须):having,支持字符串 |
| 返回值 | 当前模型实例 |
| 备注 | 无 |
having('user_id>0')复制代码| join 用于数据库的join查询支持 | |
|---|---|
| 用法 | join($join) |
| 参数 | join(必须):join操作,支持字符串和数组 |
| 返回值 | 当前模型实例 |
| 备注 | join方法支持多次调用 |
$Model->join(' work ON artist.id = work.artist_id')->join('card ON artist.card_id = card.id')->select();复制代码$Model->join('RIGHT JOIN work ON artist.id = work.artist_id')->select();复制代码join(array(' work ON artist.id = work.artist_id','card ON artist.card_id = card.id'))复制代码| union 用于数据库的union查询支持 | |
|---|---|
| 用法 | union($union,$all=false) |
| 参数 | union(必须):union操作,支持字符串、数组和对象 all(可选):是否采用UNION ALL 操作,默认为false |
| 返回值 | 当前模型实例 |
| 备注 | Union方法支持多次调用 |
$Model->field('name') ->table('think_user_0') ->union('SELECT name FROM think_user_1') ->union('SELECT name FROM think_user_2') ->select();复制代码$Model->field('name') ->table('think_user_0') ->union(array('field'=>'name','table'=>'think_user_1')) ->union(array('field'=>'name','table'=>'think_user_2')) ->select();复制代码$Model->field('name') ->table('think_user_0') ->union(array('SELECT name FROM think_user_1','SELECT name FROM think_user_2')) ->select();复制代码$Model->field('name') ->table('think_user_0') ->union('SELECT name FROM think_user_1',true) ->union('SELECT name FROM think_user_2',true) ->select();复制代码$Model->field('name') ->table('think_user_0') ->union(array('SELECT name FROM think_user_1','SELECT name FROM think_user_2'),true) ->select();复制代码| distinct 查询数据的时候进行唯一过滤 | |
|---|---|
| 用法 | distinct($distinct) |
| 参数 | distinct(必须):是否采用distinct,支持布尔值 |
| 返回值 | 当前模型实例 |
| 备注 | 无 |
$Model->Distinct(true)->field('name')->select();复制代码| lock 用于查询或者写入锁定 | |
|---|---|
| 用法 | lock($lock) |
| 参数 | lock(必须):是否需要锁定,支持布尔值 |
| 返回值 | 当前模型实例 |
| 备注 | join方法支持多次调用 |
lock(true)复制代码| validate 用于数据的自动验证 | |
|---|---|
| 用法 | validate($validate) |
| 参数 | validate(必须):自动验证定义 |
| 返回值 | 当前模型实例 |
| 备注 | 只能和create方法配合使用 |
| auto 用于数据自动完成 | |
|---|---|
| 用法 | auto($auto) |
| 参数 | auto(必须):定义自动完成 |
| 返回值 | 当前模型实例 |
| 备注 | auto方法只能配合create方法使用 |
| scope 用于模型的命名范围 | |
|---|---|
| 用法 | scope($scope) |
| 参数 | scope(必须):命名范围定义 |
| 返回值 | 当前模型实例 |
| 备注 | scope方法其实是连贯操作的预定义 |
| filter 用于数据的安全过滤 | |
|---|---|
| 用法 | filter($filter) |
| 参数 | filter(必须):过滤方法名 |
| 返回值 | 当前模型实例 |
| 备注 | filter方法一般用于写入和更新操作 |
$Model->data($data)->filter('strip_tags')->add();复制代码echo 'Hello,thinkphp...';复制代码复制代码select * from goods where goods_id in (select max(goods_id) from goods group by cat_id);复制代码复制代码echo 'Hello,thinkphp...';复制代码select * from goods where goods_id in (select max(goods_id) from goods group by cat_id);复制代码