thinkphp モデルはクエリ フィールドをフィルターし、式メソッド
はクエリ式
を使用します
クエリ式の使用形式:
$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 です
LIKE
: SQL LIKE と同じ
例: $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('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") // ユーザー オブジェクトをインスタンス化します
//変更するデータオブジェクト属性の割り当て
$data['name'] = 'ThinkPHP';
$data['score'] = array('exp','score+1') // ユーザーのポイントが 1 増加します
$User->where('id=5')->save($data) // 条件に従って変更したデータを保存します
上記のフィルター クエリ条件は、次のように _filter() 関数に記述することができます:
//クエリフィールドをフィルタリングします
function _filter(&$map){
$map['title'] = array('like',"%".$_POST['til']."%");
$map['categoryId'] = array('eq',$_REQUEST['cid']);
}