table} t JOIN products p ON t.product_id = p.id LEFT JOIN users u ON t.user_id = u.id"; $conditions = []; $params = []; if ($productId) { $conditions[] = "t.product_id = ?"; $params[] = $productId; } if ($type) { $conditions[] = "t.type = ?"; $params[] = $type; } if (!empty($conditions)) { $query .= " WHERE ".implode(' AND ', $conditions); } $query .= " ORDER BY t.created_at DESC"; return $this->db->fetchAll($query, $params); } /** * @param $productId * @param $type * @param $quantity * @param $referenceId * @param null $notes * @param $userId * @return mixed */ public function recordTransaction($productId, $type, $quantity, $referenceId = null, $notes = '', $userId = null) { return $this->insert([ 'product_id' => $productId, 'type' => $type, 'quantity' => $quantity, 'reference_id' => $referenceId, 'notes' => $notes, 'user_id' => $userId ]); } }