好的。我正在尝试用每种门票类型已售出多少张门票的数据填充表格。

mysql - 获取一张 table 出售的门票总数。滑轨-LMLPHP

因此,一个event具有许多tickets,而票证具有一个ticket_type。我需要获取每种票证类型售出的票证总数。在上图中,您可以看到我得到的销售数量数据错误。

模态:

事件:

has_many :ticket_types, dependent: :destroy
has_many :purchases, dependent: :destroy
has_many :tickets, through: :purchases


票:

belongs_to :ticket_type
belongs_to :purchase


TICKET_TYPE:

belongs_to :event


这是表循环:

  <% event.ticket_types.each do |ticket_type| %>
    <tr class=tickets-sold-modal__data>
      <td><%= ticket_type.name %></td>
      <td>$<%= ticket_type.amount.to_i %></td>
      <td><%= event.ticket_type_purchases %></td>
    </tr>
  <% end %>


在此迭代中,我调用event.ticket_type_purchases,它是此方法:

 def ticket_type_purchases
  event.tickets.group(:ticket_type_id).count
 end


那就是返回屏幕截图中所售数量的值。使用给定的信息,如何收集TOTAL TICKETS SOLD FOR EACH TICKET TYPE并将其显示在屏幕上?

最佳答案

只需将您的视图代码更改为此:

<tr class=tickets-sold-modal__data>
  <td><%= ticket_type.name %></td>
  <td>$<%= ticket_type.amount.to_i %></td>
  <td><%= event.ticket_type_purchases[ticket_type.id] || 0 %></td>
</tr>


  

但是优化上面的代码以将event.ticket_type_purchases的输出存储在一个变量中,这样就不会多次进行数据库调用。

10-08 04:21