thinkphpクエリーselect操作
174259 ワード
読み取り(Read)ThinkPHPでデータを読み取る方式は多く、通常は読み取りデータと読み取りデータセットに分けられる.
データセットの読み取りにはselectメソッドが使用されます(新しいfindallメソッドは廃止されました):
selectクエリーデータセット
使用法
select($options=array())
パラメータ
options(オプション):配列の場合は操作式を表し、通常は一貫した操作で完了します.数値または文字列の場合は、プライマリ・キーの値を表します.デフォルトは空の配列です.
コールバックインタフェース
クエリ成功_after_select(&$resultSet,$options)
戻り値
クエリエラーfalseクエリ結果が空の場合nullクエリがクエリに正常に返された結果セット(2 Dインデックス配列)を返します.
関連メソッド
通常は一貫した操作where、field、order、limit、joinなどと組み合わせて使用されます
使用例:
データセットの読み取りにはselectメソッドが使用されます(新しいfindallメソッドは廃止されました):
selectクエリーデータセット
使用法
select($options=array())
パラメータ
options(オプション):配列の場合は操作式を表し、通常は一貫した操作で完了します.数値または文字列の場合は、プライマリ・キーの値を表します.デフォルトは空の配列です.
コールバックインタフェース
クエリ成功_after_select(&$resultSet,$options)
戻り値
クエリエラーfalseクエリ結果が空の場合nullクエリがクエリに正常に返された結果セット(2 Dインデックス配列)を返します.
関連メソッド
通常は一貫した操作where、field、order、limit、joinなどと組み合わせて使用されます
使用例:
- $User = M("User"); // User
- // status 1 10
- $list = $User->where('status=1')->order('create_time')->limit(10)->select();
Select 。 where , , 。 , , 。
2
find :
find
find($options=array())
options( ): , ; 。 。
_after_find(&$result,$options)
false
null
( )
where、field、order、join
,select find , find , limit find 。
:
- $User = M("User"); // User
- // status 1name think
- $User->where('status=1 AND name="think"')->find();
,find 。
1
, getField
getField
getField($field,$sepa=null)
field( ): ( )
sepa( ): , NULL 。 null。
_after_find(&$result,$options)
null
field
field , 。 ,sepa null 。
where、limit、order
:
- $User = M("User"); // User
- // ID 3
- $nickname = $User->where('id=3')->getField('nickname');
, 。
, :
- $this->getField('id',true); // id
, :
- $User = M("User"); // User
- // ID
- $list = $User->getField('id,nickname');
list , id, nickname。
, :
- $list = $User->getField('id,nickname,email');
, select , id( getField )。
:
- $list = $User->getField('id,nickname,email',':');
, id, nickname:email 。
getField sepa , :
- $this->getField('id,name',5); // 5
- $this->getField('id',3); // id 3
order 。
ThinkPHP , , 。
、
, , :
- $User = M("User"); // User
- $User->where('type=1 AND status=1')->select();
SQL
SELECT * FROM think_user WHERE type=1 AND status=1
1
、
- $User = M("User"); // User
- $condition['name'] = 'thinkphp';
- $condition['status'] = 1;
- //
- $User->where($condition)->select();
SQL
SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1
, AND, , _logic :
- $User = M("User"); // User
- $condition['name'] = 'thinkphp';
- $condition['account'] = 'thinkphp';
- $condition['_logic'] = 'OR';
- //
- $User->where($condition)->select();
SQL
SELECT * FROM think_user WHERE `name`='thinkphp' OR `account`='thinkphp'
1
、 ( stdClass )
- $User = M("User"); // User
- //
- $condition = new stdClass();
- $condition->name = 'thinkphp';
- $condition->status= 1;
- $User->where($condition)->select();
SQL
SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1
, , , , 。
6
, SQL , ( ), :
$map[' '] = array(' ',' ');
, , :
EQ
(=)
NEQ
(<>)
GT
(>)
EGT
(>=)
LT
(
ELT
(<=)
LIKE
[NOT] BETWEEN
( )
[NOT] IN
( )IN
EXP
, SQL
:
EQ : (=)
:
- $map['id'] = array('eq',100);
- $map['id'] = 100;
id = 100
NEQ: (<>)
:
- $map['id'] = array('neq',100);
id <> 100
GT: (>)
:
- $map['id'] = array('gt',100);
id > 100
EGT: (>=)
:
- $map['id'] = array('egt',100);
id >= 100
LT: ( :
- $map['id'] = array('lt',100);
id < 100
ELT: (<=)
:
- $map['id'] = array('elt',100);
id <= 100
[NOT] LIKE: sql LIKE
:
- $map['name'] = array('like','thinkphp%');
name like 'thinkphp%'
DB_LIKE_FIELDS , 。 :
- 'DB_LIKE_FIELDS'=>'title|content'
,
- $map['title'] = 'thinkphp';
name like '%thinkphp%'
,
- $map['a'] =array('like',array('%thinkphp%','%tp'),'OR');
- $map['b'] =array('notlike',array('%thinkphp%','%tp'),'AND');
:
(a like '%thinkphp%' OR a like '%tp') AND (b not like '%thinkphp%' AND b not like '%tp')
[NOT] BETWEEN : sql [not] between, , :
- $map['id'] = array('between','1,8');
:
- $map['id'] = array('between',array('1','8'));
id BETWEEN 1 AND 8
[NOT] IN: sql [not] in , , :
- $map['id'] = array('not in','1,5,8');
:
- $map['id'] = array('not in',array('1','5','8'));
id NOT IN (1,5, 8)
EXP: ,
:
- $map['id'] = array('in','1,3,8');
:
- $map['id'] = array('exp',' IN (1,3,8) ');
exp , SQL , 。 , , :
- $User = M("User"); // User
- //
- $data['name'] = 'ThinkPHP';
- $data['score'] = array('exp','score+1');// 1
- $User->where('id=5')->save($data); //
1
, , :
、
- $User = M("User"); // User
- $map['name|title'] = 'thinkphp';
- //
- $User->where($map)->select();
name= 'thinkphp' OR title = 'thinkphp'
、
- $User = M("User"); // User
- $map['status&title'] =array('1','thinkphp','_multi'=>true);
- //
- $User->where($map)->select();
'_multi'=>true , , status= 1 AND title = 'thinkphp' , , :
$map['status&score&title'] =array('1',array('gt','0'),'thinkphp','_multi'=>true);
status= 1 AND score >0 AND title = 'thinkphp'
: “|” “&” 。
2
ThinkPHP , :
- $map['id'] = array(array('gt',1),array('lt',10)) ;
: (`id` > 1) AND (`id` < 10)
- $map['id'] = array(array('gt',3),array('lt',10), 'or') ;
: (`id` > 3) OR (`id` < 10)
- $map['id'] = array(array('neq',6),array('gt',3),'and');
:(`id` != 6) AND (`id` > 3)
AND、 OR XOR , , AND 。
, LIKE、GT EXP 。 , , :
- $map['name'] = array(array('like','%a%'), array('like','%b%'), array('like','%c%'), 'ThinkPHP','or');
:
- (`name` LIKE '%a%') OR (`name` LIKE '%b%') OR (`name` LIKE '%c%') OR (`name` = 'ThinkPHP')
2
, 。
, , (_string)、 (_complex)、 (_query), , , 。
、 ( _string )
, :
- $User = M("User"); // User
- $map['id'] = array('neq',1);
- $map['name'] = 'ok';
- $map['_string'] = 'status=1 AND score>10';
- $User->where($map)->select();
:
( `id` != 1 ) AND ( `name` = 'ok' ) AND ( status=1 AND score>10 )
、
URL , 。
- $map['id'] = array('gt','100');
- $map['_query'] = 'status=1&score=100&_logic=or';
:`id`>100 AND (`status` = '1' OR `score` = '100')
、
, , 。
:
- $where['name'] = array('like', '%thinkphp%');
- $where['title'] = array('like','%thinkphp%');
- $where['_logic'] = 'or';
- $map['_complex'] = $where;
- $map['id'] = array('gt',1);
( id > 1) AND ( ( name like '%thinkphp%') OR ( title like '%thinkphp%') )
_complex , , 。
, :
- $where['id'] = array('gt',1);
- $where['_string'] = ' (name like "%thinkphp%") OR ( title like "%thinkphp") ';
SQL 。
3
, ( ) 、 、 ,ThinkPHP , :
Count
, ( )
Max
, ( )
Min
, ( )
Avg
, ( )
Sum
, ( )
:
- $User = M("User"); // User
:
- $userCount = $User->count();
:
- $userCount = $User->count("id");
:
- $maxScore = $User->max('score');
0 :
- $minScore = $User->where('score>0')->min('score');
:
- $avgScore = $User->avg('score');
:
- $sumScore = $User->sum('score');
。
ThinkPHP , , getN 。 :
3 :
- $User->where('score>0')->order('score desc')->getN(2);
:
- $User-> where('score>80')->order('score desc')->getN(-2);
:
- $User->where('score>80')->order('score desc')->first();
:
- $User->where('score>80')->order('score desc')->last();
SQL
ThinkPHP ORM ActiveRecord , , ThinkPHP SQL , ,SQL Db , 。 :
1、query
query SQL
query($sql,$parse=false)
query( ): SQL
parse( ): SQL
false
( select )
:
- $Model = new Model() // model
- $Model->query("select * from think_user where status=1");
, ,query , query , SQL 。
2、execute
execute sql
execute($sql,$parse=false)
query( ): SQL
parse( ): SQL
false
:
- $Model = new Model() // model
- $Model->execute("update think_user set name='thinkPHP' where status=1");
, ,execute , execute , SQL 。
3、
SQL , , SQL sql , , 。
:
- $model = M("User");
- $model->query('select * from __TABLE__ where status>1');
__TABLE__ , , , sql 。
SQL
query execute SQL , SQL ( false sql ), true SQL ( )。
, :
- $model->table("think_user")
- ->where(array("name"=>"thinkphp"))
- ->field("id,name,email")
- ->query('select %FIELD% from %TABLE% %WHERE%',true);
query %FIELD%、%TABLE% %WHERE% SQL, :
%FIELD%
field
%TABLE%
table
%DISTINCT%
distinct
%WHERE%
where
%JOIN%
join
%GROUP%
group
%HAVING%
having
%ORDER%
order
%LIMIT%
limit
%UNION%
union
5
PHP5 ,ThinkPHP , :
getBy
,getByName,getByEmail
getFieldBy
,getFieldByName
top
( )
,top8,top12
、getBy
。 ,User id,name,email,address , 。
- $user = $User->getByName('liu21st');
- $user = $User->getByEmail('[email protected]');
- $user = $User->getByAddress(' ');
, find select 。
、getFieldBy
,
- $user = $User->getFieldByName('liu21st','id');
name id 。
、top
ThinkPHP , N ( , )。 , 0, 5 :
- $User-> where('score>80')->order('score desc')->top5();
8 :
- $User-> where('score>80')->order('score desc')->top8();
5
, :
1、 select
select false , SQL, :
- // SQL
- $subQuery = $model->field('id,name')->table('tablename')->group('field')->where($where)->order('status')->select(false);
2、 buildSql
- $subQuery = $model->field('id,name')->table('tablename')->group('field')->where($where)->order('status')->buildSql();
buildSql , SQL ( , SQL ), 。
- //
- $model->table($subQuery.' a')->where()->order()->select()
SQL TP , table where 。
2