Naplnění select boxu pomocí Dibi fetchall

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

Zdravím,
při vytváření formuláře volám metodu, které mi vrací pole výsledků pro naplnění select boxu hodnota=>název.

$values = $photo->GetAllPhotoSections();

$form->addSelect('is_allowed','Vyberte sekci pro vložení',$values);
	public function GetAllPhotoSections() {
		$result = dibi::query('SELECT id, name_of_section FROM [tbl_photo_sections]');
		$result->fetchAll();
		Dibi::dump($result);
		return $result;
	}

Ať už ale vyzkouším fetchAssoc, fetchPairs vždy dostávám hlášku, že předávaný parametr do FormContainer::addSelect() must be an array.

Jak to tedy vyřešit?

Díky za každou radu..

hurvajs
Člen | 86
+
0
-

A nestacilo by neco takoveho:

<?php
$form->addSelect('is_allowed','Vyberte sekci pro vložení', $photo->GetAllPhotoSections());
?>
<?php
public function GetAllPhotoSections() {
        return (array)dibi::query('SELECT id, name_of_section FROM [tbl_photo_sections]')
                ->fetchPairs('id', 'name_of_section');
}
?>
symmetry
Člen | 71
+
0
-

Ano, to by šlo, ale proč se musí návratová hodnota a její typ určovat již před definicí samotného SQL výrazu?

Jinak ale díky za radu.

hurvajs
Člen | 86
+
0
-

symmetry napsal(a):

Ano, to by šlo, ale proč se musí návratová hodnota a její typ určovat již před definicí samotného SQL výrazu?

Jinak ale díky za radu.

Jde o přetypovani na pole. Ale u fetchPairs() se vlastně nemusí přetypovávat, protože už samotná metoda vrátí array. U fetchAll() by se to použít muselo.