models adalah sebuah represntasi sendiri dengan database yang menghubungkan antara database dan bisnis logic query data pada pola mvc.
writing model
ini bentuk contoh model dasar, model membutuhkan method pada class database jadi class database akan dipanggil menggunakan use MiniMvc\Apps\Core\Bootstraping\Database;
useMiniMvc\Apps\Core\Bootstraping\Database;classUser_model{private $table ='tb_user';private $db;publicfunction__construct() {$this->db =newDatabase; }// code herepublicfunctiongetAllUser() {$this->db->query('SELECT*FROM '.$this->table);return$this->db->resultSetArray(); }publicfunctiongetUserId($id) {$this->db->query('SELECT*FROM '.$this->table .' WHERE id=:id');$this->db->bind('id', $id);return$this->db->singleArray(); }publicfunctiondeleteUserId($id) {$this->db->query('DELETEFROM '.$this->table .' WHERE id=:id');$this->db->bind('id', $id);$this->db->execute();return$this->db->rowCount(); }publicfunctiongetUser($username, $password) {$this->db->query('SELECT*FROM '.$this->table .' WHERE user_name=:user_name AND passw=:passw');$this->db->bind('user_name', $username);$this->db->bind('passw', $password);return$this->db->singleArray(); }publicfunctionregister($data) {// (`id`, `userid`, `nama`, `deskripsi`, `foto`, `user_name`, `passw`, `level`); $query ="INSERT INTO $this->table VALUES ('','',:nama,:deskripsi,:foto,:user_name,:passw,:level)";$this->db->query($query);// binding untuk data text$this->db->bind('nama', $data['nama']);$this->db->bind('deskripsi', $data['deskripsi']);$this->db->bind('user_name', $data['username']);$this->db->bind('passw', $data['password']);$this->db->bind('level', $data['status']);// binding untuk data file$this->db->bind('foto', $data['image']);$this->db->execute();return$this->db->rowCount(); }}
kamu bisa memanggil model pada controller/controller_name.php , routes/web.php atau api/api_name.php. dengan memanggil class
load model pada controller
ini metode atau cara pertama :
useMiniMvc\Apps\Core\Bootstraping\Controller;classWelcomeextendsController{publicfunctionindex() {// panggil model save di variabel $data =$this->model("namamodel")->nama_method(); }}
ini metode atau cara kedua :
<?phpdefined('BASEURL')orexit('No direct script access allowed');useMiniMvc\Apps\Core\Bootstraping\Controller;classWelcomeextendsController{publicfunctionindex() {// panggil model $data =model("namamodel")->nama_method(); }}
command shell nagara
untuk cara kedua juga bisa menggunakan command shell nagara
php nagara buat:models NamaModel
secara default nagara akan membuat file baru di root folder models, tidak bisa nested folder
nama class dibuat manual sesual nama filenya
contoh nested folder models/admin ini tidak di support command shell nagara