Jump to main content Jump to doc navigation

xPDOQuery::select

Укажите столбцы для возврата из запроса SQL.

Синтаксис

API Docs: xPDOQuery::select()

getSelectColumns($className, $tableAlias= '', $columnPrefix= '', $columns= array (), $exclude= false)
xPDOQuery select ([string $columns = '*'])

При выборе полей всегда обязательно включайте хотя бы первичный ключ таблицы, в противном случае xPDO не сможет сделать объект из него и потеряться в рекурсии с ошибкой превышения максимального числа вложенных функций в 100.

Пример

Получить коллекцию ящиков, только с полями ID и name.

$query = $xpdo->newQuery('Box');
$query->select($xpdo->getSelectColumns('Box','Box','',array('id','name')));
$boxes = $xpdo->getCollection('Box',$query);

Использование с toArray()

Важно отметить, что toArray() будет по умолчанию использовать значения отложенной загрузки, поэтому он эффективно переопределяет значения, которые вы передали методу select(). Чтобы toArray() следовал вместе с тем, что вы передали в select(), вы устанавливаете для его третьего параметра значение true.

$query = $xpdo->newQuery('modUser');
$query->select('id,username');
$users = $xpdo->getCollection('modUser',$query);
foreach ($users as $u) {
    print_r($u->toArray()); // will print ALL fields.
    print_r($u->toArray('',false,true)); // will print ONLY the selected fields.
}

Смотрите также

Функция работает с массивом имен полей или строкой, разделенной запятыми:

xPDOQuery select ([string $columns = '*'])
xPDOQuery select ([array $columns =  array()])

The example in the API docs passes select() the results of getSelectColumns(), which returns a comma-delimited list (a string).