Lze z Nette\Database\Table\Selection zjistit sloupce?

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

Zdravím, potřeboval bych nějak zjisti když mám Selection zda v té konkrétní tabulce existuje sloupec, tady ideálně jako if($selection->columnExist(‚sloupec‘))…

Navíte někdo jak na to?

Ot@s
Backer | 476
+
0
-

Z hlavy (chybí validace a ideálně celou fce. kešovat)

// v $this->database je Connection
function hasTableColumn($tblname, $colname) {
	$cols = $this->database->getSupplementalDriver()->getColumns($tblname);
	foreach ($cols as $c) if ($c['name']==$colname) return true;
	return false;
}

Edit: jako přidaná metoda nad Selection (netestováno)

Nette\Database\Table\Selection::extensionMethod('columnExist', function (Nette\Database\Table\Selection $sel, $colname) {
	$cols = $sel->getConnection()->getSupplementalDriver()->getColumns($sel->getName());
	foreach ($cols as $c) if ($c['name']==$colname) return true;
	return false;
});

Editoval Ot@s (11. 10. 2012 13:53)

Tomáš Jablonický
Člen | 115
+
0
-

Využíj výjimky. Tedy dotaž se na daný sloupec a v případě neexistence sloupce zachiť výjimku …

joseff
Člen | 233
+
0
-

@jablon: A jak se dotážu na daný sloupec u prázdné tabulky?

Editoval joseff (19. 10. 2012 13:36)