gpt4 book ai didi

mysql - 什么是最好的查询方式?

转载 作者:行者123 更新时间:2023-11-29 06:07:52 24 4
gpt4 key购买 nike

我有两个模型 employeein_outs。这些之间的关联是 employee has many in_outsin_out belongs to employee.我想显示所有 employeeattendance。为此,我的当前逻辑是这样的。

Controller Action 中的逻辑:

def view_all_employee_attendance
employees = Employee.all
@all_employess_punch_in_outs = []
employees.each do |employee|
@all_employess_punch_in_outs << employee.in_outs.where('date >= ? and date <= ?', Date.today.at_beginning_of_month, Date.today)
end
end

在 View 中:

      <tbody>
<% @all_employess_punch_in_outs.each do |punch_record| %>
<tr>
<td><%= punch_record.employee.name %></td>
<td><%= punch_record.check_in %></td>
<td><%= punch_record.check_out %></td>
</tr>
<% end %>
</tbody>

在这种情况下,在我的 View 中再次执行查询。如何使用 eagerloadingviewaction优化

最佳答案

由于您的 View 中出现以下行,您的查询将再次被调用:punch_record.employee.name

为了预先加载employee,您需要将查询修改为如下所示:

def view_all_employee_attendence
@employee_in_outs = Employee.all.includes(:in_outs).where('in_outs.date >= ? and in_outs.date <= ?', Date.today.at_beginning_of_month, Date.today)
end

包含 documentation .

关于mysql - 什么是最好的查询方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40221760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com