Structures_DataGrid_DataSource_PDO

Structures_DataGrid_DataSource_PDO -- PDO SQL Query Data Source Driver

Availability

This driver is experimental and has not been officially released yet. It is only available from CVS.

Description

This class is a data source driver for PHP Data Objects

Supported operations modes

This driver supports the following operation modes:

Table 59-1. Supported operations modes of this driver

ModeSupported?
Multiple field sortingyes
Insert, update and delete recordsno

Options

This driver accepts the following options:

Table 59-2. Options for this driver

OptionTypeDescriptionDefault Value
count_querystringQuery that calculates the number of rows. See below for more information about when such a count query is needed.''
db_optionsarrayOptions for the created database object. This option is only used when the 'dsn' option is given.array()
dbcobjectA PDO instance that will be used by this driver. Either this or the 'dsn' option is required.null
dsnstringA PDO dsn string. The PDO connection will be established by this driver. Either this or the 'dbc' option is required.null
fieldsarrayWhich data fields to fetch from the datasource. An empty array means: all fields. Form: array(field1, field2, ...)array()
generate_columnsboolGenerate Structures_DataGrid_Column objects with labels. See the 'labels' option. DEPRECATED: use Structures_DataGrid::generateColumns() insteadfalse
labelsarrayData field to column label mapping. Only used when 'generate_columns' is true. Form: array(field => label, ...) DEPRECATED: use Structures_DataGrid::generateColumns() insteadarray()
passwordstringPassword for the crated PDO connection. Only needed in conjunction with 'dsn' option.null
primaryKeyarrayName(s), or numerical index(es) of the field(s) which contain a unique record identifier (only use several fields in case of a multiple-fields primary key)null
usernamestringUsername for the created PDO connection. Only needed in conjunction with 'dsn' option.null

General notes

You need to specify either a PDO instance or a PDO compatible dsn string as an option to use this driver.

If you use complex queries (e.g. with complex joins or with aliases), $datagrid->getRecordCount() might return a wrong result. For the case of GROUP BY, UNION, or DISTINCT in your queries, and for the case of subqueries, this driver already has special handling. However, if you observe wrong record counts, you need to specify a special query that returns only the number of records (e.g. 'SELECT COUNT(*) FROM ...') as an additional option 'count_query' to the bind() call.

You can specify an ORDER BY statement in your query. Please be aware that this sorting statement is then used in *every* query before the sorting options that come from a renderer (e.g. by clicking on the column header when using the HTML_Table renderer which is sent in the HTTP request). If you want to give a default sorting statement that is only used if there is no sorting query in the HTTP request, then use $datagrid->setDefaultSort().