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 | } |