Structures_DataGrid_DataSource_DBTable – PEAR::DB_Table Data Source Driver


This class is a data source driver for the PEAR::DB_Table object

Supported operations modes

This driver supports the following operation modes:

Supported operations modes of this driver
Mode Supported?
Multiple field sorting yes
Insert, update and delete records yes


This driver accepts the following options:

Options for this driver
Option Type Description Default Value
fields array Which data fields to fetch from the datasource. An empty array means: all fields. Form: array(field1, field2, ...) array()
generate_columns bool Generate Structures_DataGrid_Column objects with labels. See the 'labels' option. DEPRECATED: use Structures_DataGrid::generateColumns() instead false
labels array Data field to column label mapping. Only used when 'generate_columns' is true. Form: array(field => label, ...) DEPRECATED: use Structures_DataGrid::generateColumns() instead array()
params array Placeholder parameters for prepare/execute array()
primaryKey array Name(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
view string The view from $sql array in your DB_Table object. This option is required. null
where string A where clause for the SQL query. null

General notes

If you use aliases in the select part of your view, the count() method from DB_Table and, therefore, $datagrid->getRecordCount() might return a wrong result. To avoid this, DB_Table uses a special query for counting if it is given via a view that needs to be named as '__count_' followed by the name of the view that this counting view belongs to. (For example: if you have a view named 'all', the counting view needs to be named as '__count_all'.)

To use update() and delete() methods, it is required that the indexes are properly defined in the $idx array in your DB_Table subclass. If you have, for example, created your database table yourself and did not setup the $idx array, you can use the 'primaryKey' option to define the primary key field.


Bind a DB_Table class to Structures_DataGrid

// basic guestbook class that extends DB_Table
class GuestBook_Table extends DB_Table
$col = array(
// unique row ID
'id' => array(
'type'    => 'integer',
'require' => true
// first name
'fname' => array(
'type'    => 'varchar',
'size'    => 32
// last name
'lname' => array(
'type'    => 'varchar',
'size'    => 64
// email address
'email' => array(
'type'    => 'varchar',
'size'    => 128,
'require' => true
// date signed
'signdate' => array(
'type'    => 'date',
'require' => true
$idx = array();  // indices don't matter here
var $sql = array(
// multiple rows for a list 
'list' => array( 
'select' => 'id, signdate, CONCAT(fname, " ", lname) AS fullname',
'order'  => 'signdate DESC'

// instantiate the extended DB_Table class
// (using an existing database connection and the table name 'guestbook')
$guestbook =& new GuestBook_Table($db'guestbook');

// Options for the bind() call
// (using the predefined query 'list' from the $sql array and a where
// condition)
$options = array('view' => 'list''where' => 'YEAR(signdate) = 2100');

// bind the guestbook object
// (if you don't generate any column yourself before rendering, three
// columns will be generated: id, signdate, fullname)
$test $datagrid->bind($guestbook$options);

// print binding error if any
if (PEAR::isError($test)) {
PEAR::DB SQL Query Data Source Driver (Previous) Excel Spreadsheet Data Source Driver (Next)
Last updated: Sat, 16 Feb 2019 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report.
View this page in:
  • English

User Notes:

There are no user contributed notes for this page.