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.
- Ot@s
- Backer | 476
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
Využíj výjimky. Tedy dotaž se na daný sloupec a v případě neexistence sloupce zachiť výjimku …