zápis volby selectboxu do databáze
- adferg
- Člen | 31
Ahoj, trochu mě trápí asi banální problém, se kterým si nevím rady. Prosím, můžete mi poradit? Předem díky.
V presenteru v metodě createComponentNewRequestForm:
//Načtu si z databáze obsah select boxu
$activities = $this->database->table(‚activities‘)->select(‚id,
name‘)->fetchPairs(‚id‘, ‚name‘);
//vytvořím formulářové pole
$form->addSelect(‚activity‘, '', $activities)
->setPrompt(‚Zadej‘)
//V šabloně se to chová správně a select box zobrazuje hodnoty
<select n:name=activity class=„w3-select
w3-border“></select>
//A v metodě formSucceeded chci zapsat do databáze, ale zapisuje mi to id „aktivity“ nikoli hodnotu
$this->database->table(‚requests‘)->insert([
‚activity‘ ⇒ $data->activity,
]);
- David Matějka
- Moderator | 6445
to je spravne, do databaze chces ulozit ID do sloupecku activity_id, ktery bude mit cizi klic na tu tabulku activities
- Kamil Valenta
- Člen | 822
$activities = $this->database->table(‚activities‘)->fetchPairs(‚name‘, ‚name‘);
Ale David se Tě snaží správně navést, že není dobré chtít ve
sloupci text a ne číselné ID.
Co když se hodnota name změní? Místo, aby sis jen změnil 1× v tabulce
activities, budeš to muset změnit ve všech tabulkách, kam jsi to uložil.
Pokud si uděláš vazbu přes ID, nemusíš to řešit…