2017-01-17 86 views
0

我有這個疑問如何根據Laravel中的關係列進行過濾?

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')); 
} 

,但它不工作。

列未發現

+0

是否缺少什麼柱? – GiamPy

+0

'state'它在第二個表'propLocation'中,我用('propLocation')連接' - > –

回答

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')); 
}