Jak vnutit modelu název tabulky z presenteru

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

Dobrý den,
Hledám nejlepší řešení viz. název tématu.

V databázi mám několik tabulek a vystačím si s jedním modelem. Jde vlastně jen o „select(‚*‘)“.
V modelu mám proměnou „private $table“ a chtěl bych ji dynamicky naplňovat v presenteru.

Napadlo mě, jestli je možné dát $table jako parametr constructoru v modelu.

V presenteru bych měl asi toto:

$articles = new \Model(‚articles‘);
$gallery = new \Model(‚gallery‘);

Tohle funguje, jen si nejsem jistý, zda je to dobrý postup.
Díky za pomoc.

OK3
Člen | 91
+
0
-

Tak evidentně to funguje, takže to není úplně špatný řešení. Jde ale o to, jak dlouho vystačíš s jedním modelem? Asi bych to řešil nějak takto:

class Model {
	protected $table;
	protected $primary;

	// společný kód pro všechny modely
	function find($id) {
		// select * from $this->table where $this->primary = $id
	}
}

class ModelGallery extends Model {
	function __construct() {
		$this->table = 'gallery';
		$this->primary = 'gid';
	}

	// zvláštní kód pro galerie
	function getPictures($gid) {
		// ...
	}
}

Co tabulka nebo nějaké logické seskupení tabulek – to jedna třída, která dědí od Model. Ideální řešení to není, ale aspoň nebudeš plácat všechny metody do jedné třídy :)