addSelect fetchPairs dva sloupce v názvu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
motorcb
Člen | 551
+
0
-

Zdravím.
Snažím se do addSelectu nandat hodnoty pro jméno a příjmení. Jak upravím následující kód aby vypsal jmeno a příjmení? Takhle vypisuje jen jméno…

$this->context->createUsers()->fetchPairs( 'id', 'first_name' ))
duke
Člen | 650
+
0
-

motorcb napsal(a):

Zdravím.
Snažím se do addSelectu nandat hodnoty pro jméno a příjmení. Jak upravím následující kód aby vypsal jmeno a příjmení? Takhle vypisuje jen jméno…

$this->context->createUsers()->fetchPairs( 'id', 'first_name' ))

Mělo by to jít takto:

$this->context->createUsers()->select("id, CONCAT_WS(' ', firstname, surname) AS name")->fetchPairs('id', 'name');

Nebo to můžeš spojit až v php, tj.:

array_map(function ($item) {
	return "$item[firstname] $item[surname]";
}, $this->context->createUsers()->select('id, firstname, surname')->fetchPairs('id'));

Edit: opraveno chybějící id v selektech

Editoval duke (13. 8. 2012 13:32)

bo
Člen | 16
+
0
-

@duke: diky moc, presne toto jsem resil i ja. jenom si te dovolim trochu opravit, zapomnel jsi tam referenci na id, takhle to haze neco jako

no reference found for $users->id

mi funguje:

<?php
$this->context->createUsers()->select("CONCAT_WS(' ', firstname, surname) AS name, id")->fetchPairs('id', 'name');
?>
duke
Člen | 650
+
0
-

Jasně, opraveno…