NotORM používané Nette – dotazy
- pYro
- Člen | 29
Mel bych taky otazku.
Potreboval bych udelat join tabulky pres mnou definovany sloupec.
Rekneme, ze mam tabulku user a role. Kazdy user ma jednu roli, tudiz
v tabulce user je sloupec role.
Klasicky podle pouziti notorm by se musel jmenovat role_id.
Podle dokumentace jsem si puvodne myslel, ze pomuze toto:
$role = $row->role()->via("role");
Ten vsak vola tabulku role.
Je nejak mozne jednoduse definovat sloupec, pres ktery se bude joinovat?
- gawan
- Člen | 110
NotORM fórum je tu. Inak to čo chceš, môžeš urobiť ak si vytvoríš vlastného potomka NotORM_Structure_Convention a upravíš funkciu getReferencedColumn alebo getReferencingColumn. Viz: http://www.notorm.com/#…
- Oggy
- Člen | 306
Na NotORM fóru mi nebylo odpovězeno..tak zkusím štěstí zde, určitě
někdo NotORM používá..
nenapadá někoho čím by mohlo být způsobeno toto?
<?php
$product = BaseModel::fetchAll('product')->where("id", $product_id)->select("IF(newprice,newprice,price) AS price");
?>
dostávám takovýto sql dotaz
<?php
SELECT IF(newprice,newprice,price) AS price FROM product WHERE (id = 16) AND (id = 'price')
?>
ještě metoda BaseModel::fetchAll()
<?php
static function fetchAll($table) {
return self::$notORM->{$table};
}
?>
- petr.pavel
- Člen | 535
Tak ti nevím, vyzkoušel jsem to u sebe:
$model = new PageModel;
$pokus = $model->db->page->where('id', $id)->select("IF(menu_title,menu_title,slug) AS title")->fetch();
dump($pokus['title']);
Hodí mi to tenhle dotaz a výsledkem je string, který jsem očekával.
SELECT IF(menu_title,menu_title,slug) AS title
FROM bwp_page
WHERE (id = '6')
Snad jedině zkusit upgradovat NotORM, víc mě nenapadá.
- tomask
- Člen | 9
Vytvářím zobecněnou abstraktní třídu pro správu tabulky. Této třídě je tabulka předána v konstruktoru jako
Nette\Database\Table\Selection
Potřebuji v metodě zahájit/potvrdit transakci. Projel jsem API k Selection a podle všeho není cesta jak docílit transakce. Líbilo by se mi mnou zamýšlené řešené předávat této třídě opravdu jen Selection na konkrétní tabulku, nikoliv celý databázový resource (díky kterému bych transakce ošetřil). Řešil někdo podobný případ?
Update k 20.4.2012
Jenom bych doplnil, že v novější revizi, aktuálně Nette 2.0.3 přibyla
u Nette\Database\Table\Selection metoda getConnection(), která přesně
řeší problém, na který jsem poukazoval. https://api.nette.org/…lection.html#…
Editoval tomask (20. 4. 2012 22:25)