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