ホームページ >バックエンド開発 >PHPチュートリアル >thinkphp モデル フィルター クエリ フィールド、式メソッド_PHP チュートリアル
クエリ式を使用する
クエリ式の使用形式:
$map['フィールド名'] = array('式', 'クエリ条件');
式では大文字と小文字が区別されません。サポートされているクエリ式は次のとおりです。それぞれの意味は次のとおりです。
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
ELT: 以下 (<=)
例: $map['id'] = array('elt',100);
表されるクエリ条件は id <= 100 です
いいね: SQL と同じ いいね
例: $map['name'] = array('like','thinkphp%');
クエリ条件は「thinkphp%」のような名前になります
DB_LIKE_FIELDS パラメータが設定されている場合、一部のフィールドではファジー クエリも自動的に実行されます。たとえば、次のように設定します:
'DB_LIKE_FIELDS'=>'タイトル|コンテンツ'
その場合は、
を使用してください
$map['title'] = 'thinkphp';
クエリ条件は「%thinkphp%」のような名前になります
[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('入っていない','1,5,8');
同等:
$map['id'] = array('入っていない',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") // ユーザーオブジェクトをインスタンス化します
;
//変更するデータオブジェクト属性に値を割り当てます
$data['name'] = 'ThinkPHP';
$data['score'] = array('exp','score+1') // ユーザーのポイントに 1 を加算します
$User->where('id=5')->save($data) // 条件に従って変更したデータを保存します
;
//クエリフィールドをフィルタリングします
関数 _filter(&$map){
$map['title'] = array('like',"%".$_POST['til']."%");
$map['categoryId'] = array('eq',$_REQUEST['cid']);
}