Laravel搜索查询与不同的表

时间:2017-12-25 06:58:12

标签: php laravel

有三张桌子; venuesvenues_parameterscalendars个表格。在venue表格上添加了所有场地,并在venues_parameters表格中添加了场地详细信息。在calendar桌子上,预订(上半场,下半场,全天,旗帜1,2和3)场地详细商店,包含日期和其他信息。

我想要的是,如果我今天搜索日期,日期是在calendar表格上检查可搜索日期是否已经预订,如果在上半场或下半场预订的日期将可用搜索其他不可用。

我的控制器代码:

public function index(Request $request, $event_type = '', $capacity = '',  $venue_type = '', $catering = '')
{

    //dd($request->datepicker); return date (format : 25/12/2017)

    $venueQuery = Venue::whereStatus('Active');
    dd($venueQuery);

    if($request->occasion) {
        $event_type = $request->occasion;
    }

    if($request->datepicker) {
        $selectedDate = $request->datepicker;
    } else {
        $selectedDate = date('m/d/Y');
    }


    if($request->capacity) {
        $capacity = $request->capacity;
    }

    if($request->venue_type_id) {
        $venue_type = $request->venue_type_id;
    }

    if($request->catering) {
        $catering = $request->catering;
    }

    if($event_type != '') {
        $venueQuery->whereHas('occasions', function ($query) use ($event_type) {
            $query->where('occasions.id', $event_type);
        });
    }

    if($capacity != '') {
        $venueQuery->whereHas('venueParameter', function ($query) use ($capacity) {
            $query->where('venue_parameters.max_capacity', $capacity);
        });
    }

    if($venue_type != '') {
        $venueQuery->whereHas('venueType', function ($query) use ($venue_type) {
            $query->where('venue_types.id', $venue_type);
        });
    }      

    if($catering != '') {
        $venueQuery->whereHas('venueParameter', function ($query) use ($catering) {
            if($catering == "indoor") {
                $catering = "1";
                $query->where('venue_parameters.is_indoor', $catering);
            } if($catering == "outdoor") {
                $catering = "1";
                $query->where('venue_parameters.is_outdoor', $catering);
            }

        });
    }

    $venues = $venueQuery->get();
    $venues_count = count($venues);
    return view('front.venue.index', compact('venues','event_type','venues_count','selectedDate'));
}

日历表供参考: enter image description here

0 个答案:

没有答案