Checkboxlist – update hodnot – syntax error

stickybit
Člen | 14
+
0
-

Ahoj,

zatím jsem v nette nepoužil checkboxlist a teď se o to snažím.

Nadefinuji si checkboxlist ve formuláři

$form->addCheckboxList('material', 'Material', $material)
->setDefaultValue($selectArr);

a pak chci provádět update v databázi

$material = $this->database->table('objednavky')->get($id);
$material->update($values);

Z formuláře se tedy posílá pole

post private => array (3)
material => array (2)
0 => "1"
1 => "2"

A update pak vyhodí syntax error, kdy pro SET hodnot na 1, 2 chybí uvozovky (apostrofy). Je to bug nebo bych ten update měl dělat nějak jinak v tomto případě? Klidně to mohu provádět přes vazební tabulku, kdy pro každý materiál bude zvlášť záznam v db, pokud je to vhodnější a někdo by mě nasměroval. Díky

UPDATE `objednavky`
SET `material`=1, 2
WHERE (`id` = 2)

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‚2 WHERE (id = 2)‘ at line 1

Mistrfilda
Člen | 76
+
+1
-

Ahoj,

budes muset pouzit propojovaci tabulku mezi objednavkami a materialy (objednavka muze mit vice materialu).

Do zpracovani formulare ti dorazi pole hodnot z checkboxlistu, proto nelze pouzit naprimo hodnotu z values jako ses o to snazil doted. Nejprve si ziskas id objednavky (vytvoris pokud neni jiz vytvorena) a pote napr. pres foreach projedes pole z checkboxlistu a ulozis zaznamy do db.

<?php
	foreach ($values['material'] as $material) {
		$this->database->table('obj_materialy')->insert([
			'obj_id' => $objednavkaId,
			'material_id' => $material
		]);
	}
?>
stickybit
Člen | 14
+
0
-

Díky, pomohl jsi mně.