Salam semangat belajar CI untuk kita semua, semoga kita menjadi programmer pro
😄. Pada kesempatan ini saya akan membahas mengenai model. Mungkin kita bertanya
apasih model yang dimaksud?. Model yang dimaksud pada framework CI adalah model
database. Secara singkat model database adalah bentuk struktur data yang
memperlihatkan hubungan atau relasi pada database serta batasan-batasannya.
Membuat sebuah aplikasi yang baik membutuhkan proses yang tidak sedikit.
Dimulai dengan pemodelan dan analisa, kemudian desain barulah pengkodean.
Tidak sampai disitu saja pembuatan aplikasi dilanjutkan dengan pengujian,
implementasi dan perawatan selama aplikasi masih digunakan. Termasuk
didalamnya dilakukan manajemen atau pengelolaan sumberdaya, biaya dan waktu
pembuatan aplikasi.
Balik lagi ke model, model database biasanya digambarkan dengan ERD (Entity
Relationship Diagram) pada tahap pemodelan. Nah, mungkin dari sinilah asal
mula model pada CI ini. ERD diterjemahkan kedalam program yang dikemas dengan
nama model pada CI. Sampai disini saya harap kita semua paham mengenai apa itu
model pada CI.
Model ------->Controller------->View
Aliran data dimulai dari model kemudian diambil oleh controller dan dari
controller dikirim dan ditampilkan ke view.
View------->Controller------->Model
Data diambil dari view (form atau link) diproses controller kemudian diteruskan ke model.
Langsung saja kita mulai tutorial nya.
#Buat Sebuah Database
-- phpMyAdmin SQL Dump
-- version 4.7.7
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Jul 08, 2020 at 05:05 PM
-- Server version: 10.1.30-MariaDB
-- PHP Version: 7.2.2
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS
*/;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `crud_db`
--
-- --------------------------------------------------------
--
-- Table structure for table `tbl_mahasiswa`
--
CREATE TABLE `tbl_mahasiswa` (
`nim` varchar(11) NOT NULL,
`nama` varchar(60) NOT NULL,
`jenis_kelamin` varchar(15) NOT NULL,
`agama` varchar(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `tbl_mahasiswa`
--
INSERT INTO `tbl_mahasiswa` (`nim`, `nama`, `jenis_kelamin`, `agama`)
VALUES
('12345', 'Budi', 'Laki-Laki', 'Islam');
--
-- Indexes for dumped tables
--
--
-- Indexes for table `tbl_mahasiswa`
--
ALTER TABLE `tbl_mahasiswa`
ADD PRIMARY KEY (`nim`);
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
#Buat Model
<?php
//nama file: Mahasiswa_model.php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Mahasiswa_model extends CI_Model
{
public $table = 'tbl_mahasiswa';
public $id = 'nim';
public $order = 'DESC';
//fungsi parent yang otomatis dijalankan
function __construct()
{
parent::__construct();
}
// fungsi untuk memilih semuah data
function
get_all()
{
$this->db->order_by($this->id,
$this->order);
return
$this->db->get($this->table)->result();
}
// fungsi untuk menampilkan data berdasarkan
primary
function get_by_id($id)
{
$this->db->where($this->id,
$id);
return
$this->db->get($this->table)->row();
}
// insert data
function insert($data)
{
$this->db->insert($this->table,
$data);
}
// update data
function update($id, $data)
{
$this->db->where($this->id,
$id);
$this->db->update($this->table,
$data);
}
// delete data
function delete($id)
{
$this->db->where($this->id,
$id);
$this->db->delete($this->table);
}
}
Catatan:
Saya memberi catatan pada
fungsi result() dan row().
result() hasil balik masih berupa objek.
row() hasil balik sudah berupa array.
Model di atas fungsi CRUD atau CREATE, READ, UPDATE, DELETE yang selalu kita
gunakan nantinya. Mungkin kita berfikir dimana query nya. CI membantu kita untuk
membuat query lebih singkat, tenang saja kita masih bisa melakukan query secara
manual.
// fungsi untuk memilih semuah data
function get_all()
{
return $this->db->query("SELECT *
FROM tbl_mahasiswa")->result();
}
#Membuat Controller
Sebenarnya pada tutorial kali ini saya belum mau membahas controller. Tapi
karna terpaksa maka kita buatlah controller agar nampak hasil dari tutorial
kita.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Mahasiswa extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->model('Mahasiswa_model');
}
public function index()
{
$mahasiswa =
$this->Mahasiswa_model->get_all();
$data =
array(
'data' => $mahasiswa
);
$this->load->view('mahasiswa',
$data);
}
}
Lihat, di fungsi construct kita menjalankan Mahasiswa_model lalu pada fungsi
index kita tinggal paggil fungsi "get_all" untuk menampilkan semua data. Coba
lihat lagi model diatas yang tulisannya berwarna merah. Nilai balik $mahasiswa
kemudian ditampung dalam array bernama $data kemudian data tersebut dikirimkan
ke view mahasiswa kemudian ditampilkan. Mari kita lihat kode untuk view
mahasiswa.php.
<!DOCTYPE html>
<html>
<head>
<title>Data
Mahasiswa</title>
</head>
<body>
<table align="center" border="1">
<tr>
<td>No.</td>
<td>NIM</td>
<td>Nama</td>
<td>Jenis
Kelamin</td>
<td>Agama</td>
<td>Aksi</td>
</tr>
<tr>
<?php
$no = 0;
foreach ($data
as $row)
{
?>
<td><?php echo ++$no
?></td>
<td><?php echo
$row->nim ?></td>
<td><?php echo
$row->nama ?></td>
<td><?php echo
$row->jenis_kelamin ?></td>
<td><?php echo
$row->agama ?></td>
<td>EDIT |
HAPUS</td>
<?php
}
?>
</tr>
</table>
</body>
</html>
Tulisan $data yang berwarna hijau
merupakan index dari array
$data yang dikirim dari controller,
kebetulan namanya sama. Saya buat sama supaya jika copas nanti kita tidak
banyak mengubah. Pada fungsi get_all mengunakan result() bukan row() maka
dipecah lagi menjadi array, jika row() tidak perlu demikian.
Panggil dengan link "localhost/belajarcodeigniter/mahasiswa". Selamat kita telah berhasil mengakses database dengan model.
Catatan: Setelah berhasil anda dapat mengikuti tutorial selanjutnya.
Terima Kasih😀