Počet řádků v databázi podmíněné hodnotou z jiné tabulky
- genesiscz
- Člen | 21
Je tu nějaká dobrá alternativa pro tento zápis ve fluent stylu? Nemám/nepoužívám FK. Chci pouze získat seznam eventů (událostí), které mají u jeho podniku (point) typ (type) 2
$this->db->query("
SELECT COUNT(*) cnt
FROM events e
INNER JOIN points p ON p.type = ?
AND p.id = e.point_id
", 2);
Editoval genesiscz (18. 3. 2014 23:08)
- JDC
- Člen | 19
Zkus
$db->table("events")->select("COUNT(*)")->where("points.type", $type);
ale nejsem si jist, jestli to mám dobře. Střílím to z hlavy, ale mělo by to jít. Joiny v Nette by se měly automaticky utvořit přes where (či možná ještě select) s tím že dáš cizi_tabulka.sloupec. Příslušný sloupec by měl mít cizí klíč.
- Mysteria
- Člen | 797
Máš dvě možnosti, buď to takhle nechat a v tom případě budeš muset psát normálně SQLko nebo to předělat podle konvencí (taky jsem přesně z tohohle důvodu u prvního projektu v půlce programování musel předělávat DB). Osobně bych doporučil druhou možnost, pokud to nemáš extra velkej projekt, tak to stejně víc jak půl hodinky nezabere a opravdu se to vyplatí.
Ono i když to nebudeš mít podle konvencí, tak třeba místo $table->secondTable->column jde psát $table->ref(secondTable, column)->column, ale komu by se tohle chtělo psát, když stačí dodržovat konvence…
Editoval Mysteria (21. 3. 2014 22:16)
- Michal Vyšinský
- Člen | 608
Nejlepší a nejmíň náročné řešení bude napsat si vlastní Reflection class, kde definuješ svoji konvenci. Inspirovat se můžeš třídou ConventionalReflection
Musíš pouze implementovat rozhraní IReflection
Editoval Michal Vyšinský (21. 3. 2014 23:43)