Structures_DataGrid_DataSource_DBQuery

Structures_DataGrid_DataSource_DBQuery -- PEAR::DB SQL クエリ データソースドライバ

説明

このクラスは、PEAR::DB オブジェクト用のデータソースドライバです。

サポートする操作モード

このドライバは次の操作モードをサポートしています。

表 62-1このドライバがサポートする操作モード

モードサポートしている?
複数フィールドによる並べ替えyes
レコードの追加、更新および削除no

オプション

このドライバは、以下のオプションを受け付けます。

表 62-2このドライバのオプション

オプション説明デフォルト値
count_querystring 行数を数えるクエリ。どのような場合にこれが必要となるのかについては、 以下を参照ください。 ''
db_optionsarray 作成したデータベースオブジェクト用のオプション。 このオプションを使用するのは、'dsn' オプションを指定したときだけです。 array()
dbcobject このドライバが使用する PEAR::DB インスタンス。 このオプションか 'dsn' のいずれかが必須となります。 null
dsnstring PEAR::DB の dsn 文字列。このドライバが DB 接続を確立するために使用します。 このオプションか 'dbc' のいずれかが必須となります。 null
fieldsarray データソースからどのフィールドを取得するか。空の配列を指定すると、 すべてのフィールドを取得します。 array(field1, field2, ...) 形式となります。 array()
generate_columnsbool ラベルつきの Structures_DataGrid_Column オブジェクトを作成します。 'labels' オプションを参照ください。 非推奨: 代わりに Structures_DataGrid::generateColumns() を使用してください。 false
labelsarray データフィールドとラベルの対応。 'generate_columns' が true の場合にのみ使用します。 array(field => label, ...) 形式となります。 非推奨: 代わりに Structures_DataGrid::generateColumns() を使用してください。 array()
primaryKeyarray レコードを一意に決定する識別子を含むフィールドの名前、 あるいは数値インデックス (複数のフィールドを指定するのは、 複合主キーの場合のみです)。 null

全般的な注意

このドライバを使用するには、DB インスタンスか DB で使用できる dsn 文字列のいずれかを指定しなければなりません。

複雑なクエリ (例えば複雑な join やエイリアスなど) を使用すると、$datagrid->getRecordCount() が間違った結果を返すことがあります。 クエリ内で GROUP BY や UNION、DISTINCT を使用している場合、 そしてサブクエリを使用している場合については ドライバで特別な対応をしています。しかし、もしレコード件数がおかしな値になるようなら、 レコード数だけを返すような特別なクエリ (例えば 'SELECT COUNT(*) FROM ...') を作成してください。をしてそれを bind() のコール時の追加オプション 'count_query' に指定します。

クエリ内で ORDER BY 文を指定することができます。この並べ替え処理は、 「すべての」クエリについて、レンダラからの並べ替え指定 (例えば、HTML_Table レンダラを使用している場合に カラムの見出しをクリックした際に HTTP リクエストとして送られます) がくる前に使用されることに注意しましょう。 HTTP リクエストで何も指定されなかった場合のデフォルトの並べ替え方法を指定したいのなら、 $datagrid->setDefaultSort() を使用してください。