Oznámení
Dynamický select modifikátor pole
před 9 lety
- Figa
- Člen | 21
Ahoj rád bych vytvořil takovouto fci:
<?php
public function findAllParams($what = array(), $order = NULL, $where = NULL, $offset = NULL, $limit = NULL)
{
return dibi::query('SELECT', $what,
'FROM [Param]',
'%if', isset($where), 'WHERE %and', isset($where) ? $where : array(), '%end',
'%if', isset($order), 'ORDER BY %by', $order, '%end',
'%if', isset($limit), 'LIMIT %i %end', $limit,
'%if', isset($offset), 'OFFSET %i %end', $offset)
->fetchAssoc('name');
}
?>
Jaký mám dát modifikátor k tomu SELECT? Jde to řšit i lépe? Předem děkuji za odpovědi.
před 9 lety
- westrem
- Člen | 398
Neviem ci spravne chapem otazke, ale ako modifikator pre identifikatory sa
pouziva %n
a bude to fungovat tak ako chces.
Inac preco neskusis dynamicky vytvarat DibiFluent podla toho co potrebujes? A nemusis to znasilnovat do takejto funkcie ;)
před 9 lety
- Figa
- Člen | 21
Děkuji mnohokrát to je přesně ono. Fluent nepoužívám protože David někde napsal, že nejsou ještě optimalizovány :) Vím, asi hloupý předsudek. Snad nebude vadit, když tento topic, využiji jako noob-helper. Mám tento šílený kód:
<?php
foreach(ParamManager::findAllParams() as $param) {
$this->array[] = $param['name'];
}
$this->template->list = implode(',', $this->array);
?>
Jak to prosím napsat lépe? Ještě jednou děkuji.
před 9 lety
- Milo
- Nette Core | 1119
Myslím, že fluent je OK, jen s DibiDataSource
je problém.
Editoval Milo (19. 11. 2010 18:48)
před 9 lety
- westrem
- Člen | 398
DibiFluent je naozaj okej a nemusis sa bat ho pouzivat ;)
K tomu kodu, ak spravne chapem ide ho zapisat na jeden riadok:
$this->template->list = implode(',', array_keys(ParamManager::findAllParams()));
před 9 lety
- Figa
- Člen | 21
Díky moc kluci :) Dám na vás a až budu příště skládat složitější dotaz tak bude fluentí . Mám další dotaz. Existuje v dibi možnost otestovat jestli existuje sloupec v tabulce? Samotné SQL to neumožňuje. Pokud taková metoda není možná by stálo za to dát to do ToDo. Ještě jednou děkuji.
Edit: Vyřešeno. Díky Dibi(Davide).
<?php
public function isColumn($column) {
$dbInfo = dibi::getDatabaseInfo();
$tableInfo = $dbInfo->getTable($this->table);
return $tableInfo->hasColumn($column);
}
?>
Editoval Figa (22. 11. 2010 23:47)