【发布时间】:2020-10-09 20:29:34
【问题描述】:
我正在尝试生成一个查询,该查询返回航班请求列表以及请求它们的用户,但我试图省略用户的 email 属性,我知道我可以将 email 添加到User 模型中的隐藏数组,但我只想从这个查询中隐藏它,因此必须将 makeVisible 方法添加到我在我的应用程序上运行的所有其他查询中是没有意义的。
我得到的查询是这样的:
FlightRequest::get()
->where('public', 1)
->whereNull('acceptee_id')
->sortBy('id')
->load('aircraft', 'requestee');
我尝试将->makeHidden('requestee.email') 添加到查询的末尾,但这不起作用
【问题讨论】:
-
这是非常糟糕的优化...您的初始查询应该是
FlightRequest::with(['aircraft', 'requestee'])->where('public', 1)->whereNull('acceptee_id')->orderBy('id')->get()。当您调用::get()时,您会将数据库中的每条记录加载到内存中,然后执行一堆额外的过滤/排序/加载,这非常低效。