Jak vnutit modelu název tabulky z presenteru
- Mirda
- Člen | 35
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
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 :)