To solve the given optimization problem, we first need to define the decision variables and the objective function. Let's denote:

- \(x_b\) as the number of units of beans used.
- \(x_o\) as the number of units of onions used.

The objective is to minimize the total cost of the burrito, which can be represented by the function:
\[ \text{Minimize} \quad 6x_b + 8x_o \]

Given the constraints:

1. The burrito must contain a minimum of 110 units of spice.
2. The burrito must contain a minimum of 80 units of flavor.

From the problem description, we know that:
- One unit of beans contains 10 units of spice and 3 units of flavor.
- One unit of onions contains 2 units of spice and 6 units of flavor.

Thus, the constraints can be formulated as follows:

1. Spice constraint: \(10x_b + 2x_o \geq 110\)
2. Flavor constraint: \(3x_b + 6x_o \geq 80\)

Also, since we cannot have negative amounts of beans or onions, we have:
\[ x_b \geq 0 \]
\[ x_o \geq 0 \]

Now, let's formulate this problem in Gurobi using Python:

```python
from gurobipy import *

# Create a new model
m = Model("Burrito_Optimization")

# Define the decision variables
x_b = m.addVar(name="beans", lb=0)
x_o = m.addVar(name="onions", lb=0)

# Set the objective function
m.setObjective(6*x_b + 8*x_o, GRB.MINIMIZE)

# Add constraints
m.addConstr(10*x_b + 2*x_o >= 110, name="spice_constraint")
m.addConstr(3*x_b + 6*x_o >= 80, name="flavor_constraint")

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Beans: {x_b.x}")
    print(f"Onions: {x_o.x}")
    print(f"Total Cost: {m.objVal}")
else:
    print("No optimal solution found")
```