Jak u Nette\Database mazat děti?
- petr.pavel
- Člen | 535
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.
- petr.pavel
- Člen | 535
@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
:-) 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
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
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 :)
- Filip Procházka
- Moderator | 4668
Tak ji napiš a pošli pull request.
Editoval HosipLan (31. 8. 2011 11:29)