我有一个可供用户筛选的租金数据库。我为此使用查询生成器。示例:
$builder = Rentals::query();
$builder = $builder->select('rentals.*');
if($request->destination_id) { $builder = $builder->where('rentals.destination_id',$request->destination_id);
等我有一张可用的桌子。我没有所有的租赁信息。如果用户选择日期范围,那么到目前为止,我将该范围与可用性表进行比较,如果该范围可用于该租赁,则返回true或false并将该id存储在数组中,然后执行以下操作:
$rentalsWithAvails = Rentals::where('true_availability',1)->get();
foreach($rentalsWithAvails as $rentalsWithAvail) {
if(Booking::isBookingAvailableR($rentalsWithAvail->id, $request->dates)) {
$rentalIdArr[] = $rentalsWithAvail->id;
}
}
$builder->whereIn('rental.id', $rentalIdArr);
到某个时候,我将拥有所有可用性,因此这将成为一个静默点,但是现在我需要处理它的工作方式和工作方式。我被要求更改此设置,因此无论我们是否实际存储了租金可用性,我都会在所有租金(除非已预订)上显示可用的租金。除了拉动两组租金并进行比较(效率不高)外,我不确定如何做到这一点。
最后一个是Is,最后我对结果进行了分页,因此我认为必须在分页之前进行逻辑处理。
简单来说,有没有一种方法可以获取所有租金(所有未预订的租金,我可以获取的ID列表),然后在我进行分页之前为它们重新进行设置,为可用的?我可以在一开始就做一些事情,例如:
$builder = $builder->select('rentals.*','0 as is_available');
然后再遍历,然后再进行分页并设置is_available = 1(如果它在该ID数组中,然后按is_available排序,然后分页)。