->selectAs()
Synopsis
void $DB_DataObject->selectAs (
object | array $columns_or_object
, string $format
, string $table_name
)
Описание
Auto creates select items based on either the current objects column names, the supplied object, or an array.
This is primarily used in conjunciton with joinAdd, to enable the renaming of columns into a fixed format when they are likely to have naming conflicts (like both tables have an 'id' column).
Sending no arguments to selectAs, will reset the current select (usually removing the default *), and build a select list based on the current objects column names.
Parameter
-
object | array $column_or_object
- a dataobject or array of column names -
string $format
- the format the columns will appear, using sprintf format, the %s is replaced with the column name so car_%s would result in the SQL 'car.name as car_name' being generated. -
string $tableName
- this is used either when use send an array as the first argument, or when you are joining a table 'as' another name,
Замечание
This function can not be called statically.
Пример
Using selectAs()
<?php
// ok lets see what is going on..
DB_DataObject::debugLevel(1);
$person = new DataObjects_Person;
// to generate "person.id as id , person.name as name ......."
$person->selectAs();
// to generate a restricted list.. "person.age as age , person.name as name"
$person->selectAs(array('age','name'));
// using another object.
$car = new DataObjects_Car;
// this is the first car (
$car->use = 'first';
// using the joinadd add the car..
$person->joinAdd($car);
// now add all the select columns for the car eg. "car.id as car_id, car.name as car_name ...."
$person->selectAs($car, 'car_%s');
// select only a few columns from the car table.
// note you have to use the table name at the end..
$person->selectAs(array('color','topspeed'), 'car_%s','car');
// now the user can have a second car....
$secondcar = new DataObjects_Car;
$secondcar->use = 'second';
// now since we alreay have one car, the sql statement would get messy
// so we are joining this as the second car "FROM person INNER JOIN car ..... , car as secondcar WHERE .....
$person->joinAdd($secondcar,'','secondcar');
// and we can now add all the columns
// "secondcar.id as secondcar_id, secondcar.name as secondcar_name ........
// note that you must use the last field as the SECONDCAR.ID format uses the 'AS' name, rather than the
// objects real table name 'car'
$person->selectAs($secondcar, 'secondcar_%s','secondcar');
// ok fire of a query...
$person->find();
while ($person->fetch()) {
......
}
?>