Many to Many Relationship in Codeigniter

Apa itu many to many relationship? Susah didefinisikan (kalau mau definitif dan mau buat skripsi lebih baik ke perpustakaan kampus atau bertanya pada dosen IT terdekat). Contohnya sebuah rental video. Para pelanggan boleh menyewa lebih dari 1 video (many) atau sebaliknya, sebuah video boleh disewa oleh lebih dari 1 (many) pelanggan.

Kebetulan saya sedang membuat sebuah aplikasi web penjualan mobil melalui showroom. Seperti juga rental video tadi, showroom boleh memiliki lebih dari 1 leasing. Jadi bagaimana mendisain many to many relationship di database?

Ketika merancang database, many to many relationship tidak mungkin dilakukan. Jika melihat ERD, sepintas kita hanya membutuhkan 2 tabel, tapi ternyata tidak mungkin. Tidak mungkin nilai leasing dimasukkan ke dalam sebuah field dan diextract melalui array, that would be stupid and not really a productive idea.

Kita membutuhkan sebuah tabel baru untuk menjembatani antara showroom dan leasing. Ada yang bilang bridge, ada yang bilang jumper. Apapun sebutannya yang penting maksudnya sama. Saya membuat tabel baru dengan field sbb

  • leasing_relationship_id : primary key, int(10)
  • showroom_id : key, int(10)
  • leasing_id : key, int(10)

Berikut ini adalah model untuk memasukkan nilai ke dalam tabel tersebut.

public function add_leasing_relationship()
{
	$this->load->database();
	$leasings = $this->input->post('leasing');
	$showroom_id = $this->db->insert_id();
	foreach ($leasings as $leasing)
	{
		$data[] = array (
			'showroom_id' => $showroom_id,
			'leasing_id' => $leasing
		);
	}
	$this->db->insert_batch('pb_leasing_rel', $data);
}

Variabel $leasings berasal dari input user melalui multiple input.
Variabel $showroom_id adalah id dari input data showroom terakhir.
Kemudian variabel $leasings di extract dan di insert ke dalam field leasing_id, sementara showroom_id di beri nilai id terakhir dari showroom.
Dan terakhir $this->db->insert_batch('pb_leasing_rel', $data); menjalankan multiple query insert sesuai banyaknya data di variabel $leasings.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s