Structures_DataGrid_DataSource_DBTable

Structures_DataGrid_DataSource_DBTable – PEAR::DB_Table Data Source Driver

Description

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

Options

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.

Examples

Bind a DB_Table class to Structures_DataGrid

<?php
// basic guestbook class that extends DB_Table
class GuestBook_Table extends DB_Table
{
    var 
$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
        
)
    );
    var 
$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)) {
    echo 
$test->getMessage(); 
}
?>