getConnection(); // Fetch all products with their translations $stmt = $pdoconn->prepare(" SELECT p.id, p.sku, p.price, p.stock, p.created_at, p.updated_at, pt.language_code, l.name as language_name, pt.name, pt.description FROM products p JOIN product_translations pt ON p.id = pt.product_id JOIN languages l ON pt.language_code = l.code ORDER BY p.id, l.id "); $stmt->execute(); $productsData = $stmt->fetchAll(PDO::FETCH_ASSOC); $products = []; foreach ($productsData as $row) { $productId = $row['id']; if (!isset($products[$productId])) { $products[$productId] = [ 'id' => (int)$productId, 'sku' => $row['sku'], 'price' => (float)$row['price'], 'stock' => (int)$row['stock'], 'created_at' => $row['created_at'], 'updated_at' => $row['updated_at'], 'translations' => [] ]; } $products[$productId]['translations'][] = [ 'language_code' => $row['language_code'], 'language_name' => $row['language_name'], 'name' => $row['name'], 'description' => $row['description'] ]; } echo json_encode(['success' => true, 'data' => array_values($products)]); } catch (Exception $e) { http_response_code(500); echo json_encode(['success' => false, 'error' => 'An internal server error occurred.']); }