Po upgrade na 2.2 nefungují cizí klíče

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

Měnil se nějak systém cizích klíčů?

Mám tabulku se sloupcem id_test na kterém je nastaven cizí klíč na tabulku tests
Mám zapnutou discoveredReflection
V šabloně mám

$data->test->title

což mi dřív fungovalo, teď to vyhodí chybu „undeclared column test“

Když to přepíšu ručně

$data->ref("tests","id_test")->title

tak to funguje, ale nechce se mi to všude přepisovat.

$data->ref("test")->title

taky selže.

vvoody
Člen | 910
+
0
-

Zmazal si cache po update?

Hafran
Člen | 121
+
0
-

Tak moje chyba. Měl jsem z nějakého důvodu i v presenteru proměnnou $db, kterou jsem tak omylem testoval. Když mi to došlo, šlo to rychle najít.

V konstruktoru modelu jsem db předával takhle (kvůli nepochopení co je connection a co context):

	public function __construct(Connection $conn) {
		$this->db = new Context($connection);
	}

Což mi ignorovalo nastavení v neonu a defaultně nastavilo Conventional Reflection u db, která to samozřejmě nenašla. Přepsal jsem na

	public function __construct(Context $con) {
		$this->db = $con;
	}

A je to.
Nechápu jenom, proč to automaticky nastavovalo to Conventional, když to defaultně teď má být Discovered?

vvoody
Člen | 910
+
+1
-

Lebo samotné NDBT (keď si ho sám inštancuješ) má defaultný ConventionalReflection. Keď si db nastavíš v configu cez sekciu nette.database, tak Context inštancuje DatabaseExtension ktorá defaultne nastavuje DiscoveredReflection.