欢迎各位兄弟 发布技术文章
这里的技术是共享的
$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);
复制代码