View difference between Paste ID: 9md7Rp4q and pKmSEiCv
SHOW: | | - or go back to the newest paste.
1
<?php
2
3
class m_pesanan extends CI_Model {
4
5
	private $table_penghubung = 'menu_pesanan';
6
7
	// ceritanya di input parameter $id_pesanan = 17, $new_menu2nya = array(2,3,4,6,7)
8
	public function updateMenu2nya($id_pesanan, array $new_menu2nya) {
9
		
10
		$current_menu_pesanan = $this->db->where('id_pesanan', $id_pesanan)->get($this->table_penghubung)->result();
11
		 
12
		$current_menu2nya = array();
13
		
14
		// pluck row object dari current_menu_pesanan ke array current_menu2nya
15
		foreach($current_menu_pesanan as $menu_pesanan) {
16
			$current_menu2nya[] = $menu_pesanan->id_menu;
17
		}
18
19
		/*
20
		 * gambaran saat ini:
21
		 * $current_menu2nya = array(1,2,3,4) << ceritanya 
22
		 * $new_menu2nya = array(2,3,4,6,7)
23
		 * ------------------------------------------------------------------
24
		 * itu berarti kita harus delete si id_menu 1, dan nambahin id_menu 6 dan 7 
25
		 * ke table penghubung yang id_pesanannya = 17,
26
		 * caranya bisa pake array_diff()
27
		 */
28
29
		$daftar_id_menu_yang_harus_di_delete = array_diff($current_menu2nya, $new_menu2nya);
30
		$daftar_id_menu_yang_harus_di_tambahin = array_diff($new_menu2nya, $current_menu2nya);
31
32
		// delete daftar id_menu yang harus di delete
33
		$this->db
34
		->where('id_pesanan', $id_pesanan)
35
		->where_in('id_menu', $daftar_id_menu_yang_harus_di_delete);
36
		->delete($this->table_penghubung);
37
38
		// daftarin id_menu baru yang belum ditambahin
39
		foreach($daftar_id_menu_yang_harus_di_tambahin as $id_menunya) {
40-
			$this->db->insert(array(
40+
			$this->db->insert($this->table_penghubung, array(
41
				'id_pesanan' => $id_pesanan,
42
				'id_menu' => $id_menunya
43
			));
44
		}
45
	}
46
47
}