Nemohu získat pole z DB exploreru (2.4)
- xlastovi
- Člen | 3
Ahoj,
luštil jsem, jak získat čisté pole z Nette DB vrstvy, ale neuspěl jsem. Získal jsem jen pole obsahující ActiveRow. Nakonec jsem dospěl k tomuto kódu, který funguje:
$items = ['' => ''];
$sel = $this->locality->getTable()->select('poznamka')->group('poznamka')->order('poznamka');
foreach ($sel as $value)
$items[$value->poznamka] = $value->poznamka;
$form['poznamka'] = new Select2('Poznámka:', $items);
Neexistuje lepší a kratší řešení? Těchto polí mám ve vyhledávacím formuláři čtyři.
- Kamil Valenta
- Člen | 820
$selection->fetch()->toArray();
?
Případně pokud to má být pro select ve formu, tak jen fetchPairs()
Editoval kamil_v (7. 8. 2020 22:32)
- fikusir
- Člen | 27
Já to udělal takhle v 3.0
Model:
public function getSapNumbers()
{
return $this->database->fetchPairs('SELECT SAP from RVGeneral');
}
Presenter:
$sap_numbers=$this->generalManager->getSapNumbers();
$form->addSelect('sap', 'SAP:')
->setItems($sap_numbers, false)
->setDefaultValue($this->sap)
->setPrompt('Zvolte SAP')
->setRequired("Pole SAP je povinné");
Editoval fikusir (13. 8. 2020 12:57)
- xlastovi
- Člen | 3
Krejcir6 napsal(a):
Ten tvůj kód by se dal zkrátit takto:
$items = $this->locality->getTable()->select('poznamka')->group('poznamka')->order('poznamka')->fetchPairs('poznamka','poznamka'); $form['poznamka'] = new Select2('Poznámka:', $items);
Děkuji, je to tak. Jen potřebuji tu první prázdnou položku, ale to je detail, který vyřeším.
Později jsem zjistil, že v jiné situaci získám pole pomocí fetchPairs(null, ‚sloupec‘).
Mimochodem, teprve teď jsem při návštěvě fóra zaregistroval, že můj příspěvek má odpovědi. Nevšiml jsem si, že je potřeba se ručně přihlásit k odběru.