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).

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • Jens Wittmann – Gestaltung & Entwicklung
  • Digital Penguin
  • eydolan
  • deJaya
  • Sepia River Studios
  • Following Sea
  • Fabian Christen
  • Dannevang Digital
  • Anton Tarasov
  • Lefthandmedia
  • Murray Wood
  • Nick Clark
  • YJ
  • Chris Fickling
  • CrewMark
  • Richard

Budget

$269 per month—let's make that $500!

Learn more