db->fetchAll("SELECT setting_key, setting_value FROM {$this->table}"); foreach ($settings as $setting) { $result[$setting['setting_key']] = $setting['setting_value']; } } else { // Get specific settings $placeholders = implode(',', array_fill(0, count($keys), '?')); $settings = $this->db->fetchAll( "SELECT setting_key, setting_value FROM {$this->table} WHERE setting_key IN ($placeholders)", $keys ); // Fill in missing keys with null foreach ($keys as $key) { $result[$key] = null; } // Populate with actual values foreach ($settings as $setting) { $result[$setting['setting_key']] = $setting['setting_value']; } } return $result; } /** * @param $settings */ public function updateSettings($settings) { $this->db->beginTransaction(); try { foreach ($settings as $key => $value) { if ($value === null) { continue; } // Check if setting already exists $exists = $this->db->fetchColumn( "SELECT COUNT(*) FROM {$this->table} WHERE setting_key = ?", [$key] ); if ($exists > 0) { // Update existing setting $this->db->update( $this->table, ['setting_value' => $value], ['setting_key = ?'], [$key] ); } else { // Insert new setting $this->db->insert($this->table, [ 'setting_key' => $key, 'setting_value' => $value ]); } } $this->db->commit(); return true; } catch (Exception $e) { $this->db->rollBack(); throw $e; } } }