如何按Laravel中的关系列进行过滤?

时间:2017-01-17 11:13:57

标签: mysql laravel eloquent

我有这个查询

public function index()
{
    $properties = PropertyDetail::query()->with('propLocation');

    $properties->where('type', Input::get('unitType'));
    $properties->where('purpose', Input::get('purpose'));
    $properties->where('active', 1);

    if (Input::has('specifyType')) {
        $properties->where('specify_type', Input::get('specifyType'));
    }

    if (Input::has('location')) {
        $properties->where('state', Input::get('location'));
    }

    $result = $properties->get();
    return View::make('portal.properties.view', compact('result'));
}

propLocation是我的第二个表,现在如何在那里搜索统计值, 应该怎么做?

我试过了:

if (Input::has('location')) {
    $properties->where('state', Input::get('location'));
}

但它不起作用。

  

未找到专栏

1 个答案:

答案 0 :(得分:0)

您无法像这样过滤关系列。您需要使用whereHas()

试试这样:

public function index()
{
    $properties = PropertyDetail::query()->with('propLocation');

    $properties->where('type', Input::get('unitType'));
    $properties->where('purpose', Input::get('purpose'));
    $properties->where('active', 1);

    if (Input::has('specifyType')) {
        $properties->where('specify_type', Input::get('specifyType'));
    }

    if (Input::has('location')) {
        $properties->whereHas('propLocation', function ($query) {
            $query->where('state', Input::get('location'));
        });
    }

    $result = $properties->get();
    return View::make('portal.properties.view', compact('result'));
}