Nette\Database primary index pri selectu z vice tabulek
- dTTb
- Člen | 30
Ahoj,
nejsem si jistej jestli je to bug, nebo feature. Kdyz udelam v modelu:
<?php
return $this->database->table('objednavka')->select('objednavka.*,zakaznik.*')->where('objednavka.id IN ?', $ids)->where('zakaznik.id = objednavka.zakaznik');
?>
tak je jako klic vyslednych ActiveRow pouzito
zakaznik.id
[jde to fixnout prehozenim ->select('zakaznik.*,objednavka.*')
], ale nebylo by intuitivnejsi pouzivat id tabulky kterou dotaz zacina – tim
mysleno podle table('objednavka')
.
- David Matějka
- Moderator | 6445
Vybirani dat z vice tabulek je proti filozofii NDBT: https://doc.nette.org/…ase/explorer
Nette\Database\Table zjednodušuje a optimalizuje výběr dat z databáze. Hlavní myšlenkou je načítání dat pouze z jedné tabulky a tak, aby se tyto dotazy pokládaly jen jednou. Data jsou načtena do ActiveRow instancí. Data z jiných tabulek připojených vazbami jsou načteny samostatnými požadavky – o to se stará samotná vrstva Database\Table.
takze bys mel pouzit ref
Jinak soucasne chovani je imho logictejsi, nez kdyby to bylo obracene (navic, zmena by byl celkem osklivy bc break). Lepsi by bylo vyhazovat chybu pri duplicitnich sloupeccich, jako to dela ResultSet