Curry
PHP Framework

core

db

html

utility

SqlDelete

クラス概要

SqlDeleteはSQLのDELETE文構築の機能を提供します。
SqlDeleteのインスタンスはModel::deleteメソッドにより取得します。これにより、Modelに設定されているテーブルに対するDELETE文構築オブジェクトとして機能することになります。
DELETE文で削除するレコードの条件指定はwhereメソッドにより設定し、executeメソッドにより、SQLを実行します。

SqlDeleteの各メソッドはそのほとんどが自分自身のインスタンスを返します。そのため、メソッドチェーンを利用して柔軟なコーディングが可能です。

クラスファイル位置

curry/db/sql_delete.php

フィールド

公開されるフィールドはありません。

メソッド

メソッド名 アクセス 概要

継承メソッド()

メソッド名 アクセス 概要
__construct public コンストラクタです。
getSql public 事前に設定された各条件をもとにSQL文を構築し、返します。
getParams public 現在設定されているプレースホルダパラメータを取得します。
enablePreparing public 同一インスタンスで連続してSQLを実行した場合、1回目の実行時にプリペアを行ってステートメントを生成し、以降の実行は生成されたプリペアドステートメントを利用して実行しますが、
このメソッドではこのプリペアドステートメントを利用するかしないかを設定します。

誤解してはいけないのが、Curryでは基本的に全てのSQLの実行はプリペアしています。
このメソッドで行う設定は、最初の1回目のプリペアドステートメントを使い続けるか、
それとも都度再生成するかの違いです。
最利用する方が効率が良いので、通常は特に意識する必要はなく、初期値のままで構いません。

※バージョン1.1.0以降
params public プレースホルダパラメータの値をセットします。
SQL文中に":"(コロン)で始まるプレースホルダが存在する場合、そのプレースホルダに当てはめる値をプレースホルダ名と値の組み合わせで指定します。

指定の方法は二通りあります。
一つはプレースホルダ名をキーとする連想配列で指定する方法。この場合は複数同時に指定がかのうです。
もう一つは第一引数にプレースホルダ名、第二引数に値を指定する方法で、この場合はひとつずつしか設定できません。

このメソッドによる指定時、プレースホルダ名の指定は先頭の":"(コロン)を付加してはいけません。内部で自動的に付加しています。
execute public SQL文を構築し、実行します。
clearConditions public whereやorder等、各メソッドで設定された条件を全てクリアします。
getStatement public 直前に実行したSQLのプリペアドステートメントを取得します。
where public WHERE条件の指定を行います。
指定の仕方はいくつか存在します。

1,フィールド名と値の組み合わせで指定
$select->where('age', 30);

2,ハッシュで指定
$select->where(array('age' => 30));

3,WHERE条件文を直接指定
$select->where("age = 30");

SQLインジェクション対策のため、値は直接WHERE句中に含めるべきではありません。
値の指定はプレースホルダ化し、パラメーターとして別指定するのが望ましいです。
上記の3パターンのうち、1や2のような指定の仕方をした場合、内部で自動的にプレースホルダとして処理してくれますが、3のように直接条件文に値を記述するのは安全ではありません。この場合、以下のようにするべきです。

$select->where("age = :age");
$select->params(array('age' => 30));

whereメソッドを複数回実行した場合、各条件をAND結合します。
$select->where('age', 30);
$select->where('name', 'taro');
→WHERE (age = 30) AND (name = 'taro')

値にnullが指定された場合はデータベースの値としてもNULLで比較します。
$select->where('name', null);
→WHERE (name IS NULL)
orWhere public WHERE条件をOR結合で設定します。
whereメソッドとの違いは、既にWHERE条件の指定が一度でも行われている場合に、直前の条件との結合が"AND"ではなく"OR"になるということです。

$select->where('age', 30);
$select->orWhere('name', 'taro');
→WHERE (age = 30) OR (name = 'taro')

そのため、最初の一つ目の条件指定の場合に限り、whereでもorWhereでも結果は同じになります。

条件の指定方法はwhereメソッドと同様なのでwhereメソッドの説明を参照してください。
whereNot public 否定のWHERE条件を指定します。

whereメソッドとの違いは、フィールド名と値の比較演算子が"="ではなく"<>"になるということです。
値がnullの場合は"IS NULL"ではなく"IS NOT NULL"になります。

$select->whereNot('age', 30);
$select->whereNot('name', null);
→WHERE (age <> 30) AND (name IS NOT NULL)
orWhereNot public 否定のWHERE条件指定をOR結合で設定します。
whereNotのOR版です。

$select->whereNot('age', 30);
$select->orWhereNot('name', null);
→WHERE (age <> 30) OR (name IS NOT NULL)

orWhereメソッドと同様、最初の一つ目の条件指定時はwhereNotと違いはありません。
whereLike public LIKE演算子による曖昧条件の指定を行います。
このメソッドで値に"%"を含めるとあいまい条件検索が可能になります。

$select->where('age', 30);
$select->whereLike('name', 'ta%');
→WHERE (age = 30) AND (name LIKE 'ta%')
orWhereLike public LIKE演算子による曖昧条件をOR結合で指定します。
whereLikeメソッドのOR版です。

$select->where('age', 30);
$select->orWhereLike('name', 'ta%');
→WHERE (age = 30) OR (name LIKE 'ta%')

orWhereメソッドと同様、最初の一つ目の条件指定時はwhereLikeと違いはありません。
whereNotLike public LIKE演算子による否定の曖昧条件の指定を行います。
whereLikeの否定条件版です。

$select->where('age', 30);
$select->whereNotLike('name', 'ta%');
→WHERE (age = 30) AND (name NOT LIKE 'ta%')
orWhereNotLike public LIKE演算子による否定の曖昧条件をOR結合で指定します。
whereNoLikeのOR版です。

$select->where('age', 30);
$select->orWhereNotLike('name', 'ta%');
→WHERE (age = 30) OR (name NOT LIKE 'ta%')

orWhereメソッドと同様、最初の一つ目の条件指定時はwhereLikeと違いはありません。
whereIn public IN演算子による条件の指定を行います。
第二引数に複数の値を配列で指定することにより、すべての値のいずれかに合致する条件を指定することができます。

$ages = array(20, 21, 22, 23, 24, 25);
$select->where('name', 'taro');
$select->whereIn('age', $ages);
→WHERE (name = 'taro') AND (age IN (20, 21, 22, 23, 24, 25))
orWhereIn public IN演算子による条件をOR結合で指定します。
whereInのOR版です。

$ages = array(20, 21, 22, 23, 24, 25);
$select->where('name', 'taro');
$select->orWhereIn('age', $ages);
→WHERE (name = 'taro') OR (age IN (20, 21, 22, 23, 24, 25))

orWhereメソッドと同様、最初の一つ目の条件指定時はwhereInと違いはありません。
whereNotIn public IN演算子による否定の条件の指定を行います。
whereInの否定条件版です。
第二引数に複数の値を配列で指定することにより、すべての値のどれにも合致しない条件を指定することができます。

$ages = array(20, 21, 22, 23, 24, 25);
$select->where('name', 'taro');
$select->whereNotIn('age', $ages);
→WHERE (name = 'taro') AND (age NOT IN (20, 21, 22, 23, 24, 25))
orWhereNotIn public N演算子による否定の条件をOR結合で指定します。
whereNoInのOR版です。

$ages = array(20, 21, 22, 23, 24, 25);
$select->where('name', 'taro');
$select->orWhereNotIn('age', $ages);
→WHERE (name = 'taro') OR (age NOT IN (20, 21, 22, 23, 24, 25))
whereGt public 大なりのWHERE条件を指定します。
フィールド名と値の比較演算子を">"とし、対象列が条件指定した値より大きい事を条件とする場合に使用します。

$select->where('name', 'taro');
$select->whereGt('age', 30);
→WHERE (name = 'taro') AND (age > 30)

※バージョン1.2.0以降
whereLt public 小なりのWHERE条件を指定します。
フィールド名と値の比較演算子を"<"とし、対象列が条件指定した値より小さい事を条件とする場合に使用します。

$select->where('name', 'taro');
$select->whereLt('age', 30);
→WHERE (name = 'taro') AND (age < 30)

※バージョン1.2.0以降
whereGe public 大なりイコールのWHERE条件を指定します。
フィールド名と値の比較演算子を">="とし、対象列が条件指定した値より大きい、または等しい事を条件とする場合に使用します。

$select->where('name', 'taro');
$select->whereGe('age', 30);
→WHERE (name = 'taro') AND (age >= 30)

※バージョン1.2.0以降
whereLe public 小なりイコールのWHERE条件を指定します。
フィールド名と値の比較演算子を"<="とし、対象列が条件指定した値より小さい、または等しい事を条する場合に使用します。

$select->where('name', 'taro');
$select->whereLe('age', 30);
→WHERE (name = 'taro') AND (age <= 30)

※バージョン1.2.0以降
orWhereGt public 大なりの条件指定をOR結合で指定します。
whereGtメソッドのOR版です。

$select->where('age', 30);
$select->orWhereGt('name', 'taro');
→WHERE (age = 30) OR (name > 'taro')


※バージョン1.2.0以降
orWhereLt public 小なりの条件指定をOR結合で指定します。
whereLtメソッドのOR版です。

$select->where('age', 30);
$select->orWhereLt('name', 'taro');
→WHERE (age = 30) OR (name < 'taro')

※バージョン1.2.0以降
orWhereGe public 大なりイコールの条件指定をOR結合で指定します。
whereGeメソッドのOR版です。

$select->where('age', 30);
$select->orWhereGe('name', 'taro');
→WHERE (age = 30) OR (name >= 'taro')

※バージョン1.2.0以降
orWhereLe public 小なりイコールの条件指定をOR結合で指定します。
whereLeメソッドのOR版です。

$select->where('age', 30);
$select->orWhereLe('name', 'taro');
→WHERE (age = 30) OR (name <= 'taro')

※バージョン1.2.0以降
whereBetween public 範囲指定のWHERE条件を設定します。
BETWEEN演算子を使用し、対象列が指定した2つの値の範囲内であることを条件とする場合に指定します。

$select->where('name', 'taro');
$select->whereBetween('age', 30, 40);
→WHERE (name = 'taro') AND (age BETWEEN 30 AND 40)

※バージョン1.2.0以降
whereNotBetween public 否定の範囲指定のWHERE条件を設定します。
BETWEEN演算子を使用し、対象列が指定した2つの値の範囲外であることを条件とする場合に指定します。

$select->where('name', 'taro');
$select->whereNotBetween('age', 30, 40);
→WHERE (name = 'taro') AND (age NOT BETWEEN 30 AND 40)

※バージョン1.2.0以降
orWhereBetween public 範囲指定のWHERE条件をOR結合で設定します。
whereBetweenのOR版です。

$select->where('name', 'taro');
$select->orWhereBetween('age', 30, 40);
→WHERE (name = 'taro') OR (age BETWEEN 30 AND 40)

※バージョン1.2.0以降
orWhereNotBetween public 否定の範囲指定のWHERE条件をOR結合で設定します。
whereNotBetweenのOR版です。

$select->where('name', 'taro');
$select->orWhereNotBetween('age', 30, 40);
→WHERE (name = 'taro') OR (age NOT BETWEEN 30 AND 40)

※バージョン1.2.0以降