Jde odkázat na sloupec přes cizí klíč pomocí proměnné?

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

Mám cca takovouhle funkci, které předám sloupec v tabulce jako string v proměnné $column

public function getSMT($id, $column){
	return $this->db->table("user")->get($id)->$column;
}

A teď jsem narazil na potřebu předat tam referencovaný sloupec přes cizí klíč. (třeba tabulka user přes data_id vede na user_data a z user_data bych potřeboval sloupec sloupec_z_druhe_tabulky)

Tedy že bych do funkce poslal

$column = "user_data->sloupec_z_druhe_tabulky" nebo "user_data.sloupec_z_druhe_tabulky";

což nejde. Napadá vás, jak na to, abych nemusel měnit tu funkci?

Edited: //Napsal jsem to trošku hloupě. Funkci samozřejmě měnit budu muset, ale jde mi o to jestli to tam budu moct posílat tím stringem – jestli si s tím NDB nikterak neporadí, třeba přes ref nebo tak.

Editoval Hafran (15. 8. 2014 12:56)

David Matějka
Moderator | 6445
+
+1
-

Ne, budes muset upravit tu funkci

Hafran
Člen | 121
+
0
-

Jasný, změnil jsem to takhle:

public function getSMT($id, $column){
	if (strpos($column, ".") === FALSE) {
			$img = $this->db("user")->get($id)->$column;
		} else {
			$c = explode(".", $column);
			$table = $c[0];
			$column = $c[1];
			$img = $this->db("user")->get($id)->ref($table)->$column;
		}
}

Ale tomuhle větvení jsem se chtěl vyhnout, a zajímalo by mě, jestli to některá z těch fcí u NDB třeba neumí ošetřit nějak sama.

CZechBoY
Člen | 3608
+
0
-

Vracej odkaz na selection/activerow.

public function getSMT($id){
    return $this->db->table("user")->get($id);
}

Pak by mělo jít selectovat dál ne? :-)