Nette\Database primary index pri selectu z vice tabulek

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

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
+
0
-

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