Jak u Nette\Database mazat děti?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
petr.pavel
Člen | 535
+
0
-

Ahoj lidi,
získávání dětí funguje přes

<?php
$deti = $this->db->table('rodic')->get($id)->related('dite');
?>

tak jsem myslel, že smazat je můžu jednoduchým rozšířením o delete():

<?php
$this->db->table('rodic')->get($id)->related('dite')->delete();
?>

To ale vyhodí výjimku PDOException #42000, protože vytvořené SQL je špatně:

DELETE
FROM `ghs_product`
WHERE (`sub_category_id` = '5') 5

(všimněte si té druhé pětky na konci)

Tak nevím, jestli je chyba u mě nebo v Nette\Database.

Já vím, že bych to mohl obejít třeba přes $database->exec('DELETE..., ale rád bych používal vychytanou logiku NotORM.

rixi
Člen | 109
+
0
-

mna by to napadlo takto

$this->db->table('dite')->where('rodic_id', $id)->delete();
petr.pavel
Člen | 535
+
0
-

@rixi: To by určitě taky šlo. Špatně jsem popsal, o co mi jde, promiň. Nehledám způsob, jak smazat věty v tabulce ‚dite‘, ale jak mazat přes related(‚dite‘).

Buď je v té mojí syntaxi nějaká logická chyba (Nette\Database takhle nepracuje) nebo je chyba v Nette\Database a pak bych to rád napsal do Trackeru. Řekl bych, že dokonce i kdyby můj přístup nebyl v duchu logiky Nette\Database, tak bych měl dostat nějakou výjimku (IdioticUseException) a ne nesmyslné SQL.

petr.pavel
Člen | 535
+
0
-

No tak chlapi, nikoho k tomu nic nenapadá?

vrana
Člen | 131
+
0
-

Zkus použít přímo NotORM.

petr.pavel
Člen | 535
+
0
-

:-) Mám Tvou odpověď chápat tak, že to v NotORM jde, tudíž to není proti logice NotORM a Nette\Database? Pak je tedy chyba v Nette\Database a moje správná reakce je napsat do Trackeru.

Kdybych Tvou odpověď chápal doslovně, tak mi nepomůže.

Pokoušel jsem se několikrát zde na fóru vypátrat, jaká jsou v komunitě kolem Nette (nepsaná) pravidla. Nikdy jsem se na vývoji open-source nepodílel, ale měl jsem (možná naivní) představu, že autoři stojí o pomoc s testováním, případně i s opravou. Z reakcí tady na fóru se mi tenhle dojem zatím moc nepotvrdil.
Lidé rádi poradí (díky!), ale cokoliv kolem opravování Nette nebo dokumentace jako by bylo tabu.

Jan Tvrdík
Nette guru | 2595
+
0
-

petr.pavel wrote:

Pokoušel jsem se několikrát zde na fóru vypátrat, jaká jsou v komunitě kolem Nette (nepsaná) pravidla. Nikdy jsem se na vývoji open-source nepodílel, ale měl jsem (možná naivní) představu, že autoři stojí o pomoc s testováním, případně i s opravou. Z reakcí tady na fóru se mi tenhle dojem zatím moc nepotvrdil.
Lidé rádi poradí (díky!), ale cokoliv kolem opravování Nette nebo dokumentace jako by bylo tabu.

Máš možnost jak posílat opravy Nette (jako pull request), tak opravy dokumentace. Viz odpověď jinde.

Filip Procházka
Moderator | 4668
+
0
-

Není to tabu, jenom hodně těžké přesvědčit Davida, že tvoje vylepšení má smysl (pokud oprava není zřejmá).

A pak je tu taky občas dost mizerná reakční doba, což se dá ale chápat, když má člověk na krku stovky lidí a každý druhý něco chce, tak dá rozum, že chvíli trvá než se na tebe dostane řada. Já jsem třeba jeden pull request tlačil do Nette 3 měsíce a dostal jsem ho tam až díky tomu, že jsem to Davidovi hodně důkladně vysvětlil na https://www.posobota.cz/ :)

Proto se toho moc lidí zhosťovat nechce, protože by tohle úsilí museli vyvíjet kvůli chybě, která trápí tebe :) Samozřejmě netvrdím, že to je takhle vždycky. Často i se stává, že se dostane oprava do Nette už ten samý den. Je to dost o štěstí :)

Každopádně poslané opravy se neztratí:) Klidně začni forknutím nette :)

Wizzard256
Člen | 18
+
0
-

Mam stejny problem, take bych byl pro opravu

Filip Procházka
Moderator | 4668
+
0
-

Tak ji napiš a pošli pull request.

Editoval HosipLan (31. 8. 2011 11:29)