NaifyDb\QueryBuilder\OrderBuilder クラス

ORDER BY 句ビルダー

ソート対象のカラムと方向だけを保持し、ORDER BY 句へ変換する。 QueryBuilder の内部部品だが、単体で順序句だけ必要な場面でも使える。

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

使用例

$order = (new OrderBuilder())
    ->orderBy('created_at', 'DESC')
    ->orderBy('id', 'ASC');

$sql = $order->build();
// " ORDER BY created_at DESC, id ASC"

設計意図

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

プロパティ

名前型説明
private $orders array 追加順の ORDER BY 要素

メソッド

メソッド説明
public orderBy(string $column, string $direction = ASC): static ソート順を追加する
カラム指定は自動エスケープ・存在確認しない。式や別名の意味を変えないため、自動クオートもしない。 外部入力は直接渡さず、許可リストで固定の指定へ対応付ける。実カラム名の存在確認が必要な場合は、 Connection::describeTable()で取得したTableSchema::hasColumn()を使う。SQL式や別名の安全性は判定しない。
public build(): string ORDER BY 句を組み立てる