NaifyDb\QueryBuilder\WhereBuilder クラス

WHERE 句をメソッドチェーンで組み立て、SQL 文字列とバインド値を返す

Connection なしで使える。検索フォームの条件組み立てなど、WHERE 句だけ必要な場面に適している。

カラム名・テーブル名・SQL式は自動エスケープ・クオート・存在確認しない。 条件値や保存値はSQL指定と区別し、プレースホルダに分離して実行時にバインドする。 外部入力から指定を選ぶ場合は、呼び出し側の許可リストで固定のSQL指定へ対応付ける。 実カラム名の存在確認には、必要に応じてConnection::describeTable()とTableSchema::hasColumn()を使う。 SQL式や別名の解析、使用を許可するカラムの選別は呼び出し側で行う。

使用例

$where = new WhereBuilder();
if ($name)   $where->where('name', 'LIKE', "%{$name}%");
if ($status !== null) $where->where('status', '=', $status);
[$sql, $bindings] = $where->build();
// $sql = " WHERE name LIKE ? AND status = ?"
// $bindings = ['%test%', 1]

設計意図

カラム指定は自動エスケープ・存在確認しない。式や別名の意味を変えないため、自動クオートもしない。 外部入力は直接渡さず、許可リストで固定の指定へ対応付ける。実カラム名の存在確認が必要な場合は、 Connection::describeTable()で取得したTableSchema::hasColumn()を使う。SQL式や別名の安全性は判定しない。
カラム指定は自動エスケープ・存在確認しない。式や別名の意味を変えないため、自動クオートもしない。 外部入力は直接渡さず、許可リストで固定の指定へ対応付ける。実カラム名の存在確認が必要な場合は、 Connection::describeTable()で取得したTableSchema::hasColumn()を使う。SQL式や別名の安全性は判定しない。
カラム指定は自動エスケープ・存在確認しない。式や別名の意味を変えないため、自動クオートもしない。 外部入力は直接渡さず、許可リストで固定の指定へ対応付ける。実カラム名の存在確認が必要な場合は、 Connection::describeTable()で取得したTableSchema::hasColumn()を使う。SQL式や別名の安全性は判定しない。
カラム指定は自動エスケープ・存在確認しない。式や別名の意味を変えないため、自動クオートもしない。 外部入力は直接渡さず、許可リストで固定の指定へ対応付ける。実カラム名の存在確認が必要な場合は、 Connection::describeTable()で取得したTableSchema::hasColumn()を使う。SQL式や別名の安全性は判定しない。
カラム指定は自動エスケープ・存在確認しない。式や別名の意味を変えないため、自動クオートもしない。 外部入力は直接渡さず、許可リストで固定の指定へ対応付ける。実カラム名の存在確認が必要な場合は、 Connection::describeTable()で取得したTableSchema::hasColumn()を使う。SQL式や別名の安全性は判定しない。

プロパティ

名前型説明
protected $wheres array 追加順の WHERE 条件一覧

メソッド

メソッド説明
public where(string $column, string $operator, mixed $value): static AND 条件を追加する
カラム指定は自動エスケープ・存在確認しない。式や別名の意味を変えないため、自動クオートもしない。 外部入力は直接渡さず、許可リストで固定の指定へ対応付ける。実カラム名の存在確認が必要な場合は、 Connection::describeTable()で取得したTableSchema::hasColumn()を使う。SQL式や別名の安全性は判定しない。
public orWhere(string $column, string $operator, mixed $value): static OR 条件を追加する
カラム指定は自動エスケープ・存在確認しない。式や別名の意味を変えないため、自動クオートもしない。 外部入力は直接渡さず、許可リストで固定の指定へ対応付ける。実カラム名の存在確認が必要な場合は、 Connection::describeTable()で取得したTableSchema::hasColumn()を使う。SQL式や別名の安全性は判定しない。
public whereIn(string $column, array $values): static IN 条件を追加する
カラム指定は自動エスケープ・存在確認しない。式や別名の意味を変えないため、自動クオートもしない。 外部入力は直接渡さず、許可リストで固定の指定へ対応付ける。実カラム名の存在確認が必要な場合は、 Connection::describeTable()で取得したTableSchema::hasColumn()を使う。SQL式や別名の安全性は判定しない。
public whereNull(string $column): static IS NULL 条件を追加する
カラム指定は自動エスケープ・存在確認しない。式や別名の意味を変えないため、自動クオートもしない。 外部入力は直接渡さず、許可リストで固定の指定へ対応付ける。実カラム名の存在確認が必要な場合は、 Connection::describeTable()で取得したTableSchema::hasColumn()を使う。SQL式や別名の安全性は判定しない。
public whereNotNull(string $column): static IS NOT NULL 条件を追加する
カラム指定は自動エスケープ・存在確認しない。式や別名の意味を変えないため、自動クオートもしない。 外部入力は直接渡さず、許可リストで固定の指定へ対応付ける。実カラム名の存在確認が必要な場合は、 Connection::describeTable()で取得したTableSchema::hasColumn()を使う。SQL式や別名の安全性は判定しない。
public hasConditions(): bool 条件が追加されているか
public build(): array WHERE 句と バインドパラメータを組み立てる
private normalizeOperator(string $operator): string 演算子を正規化して検証する