2016-11-18 93 views
0

我有这种关系:Laravel雄辩其中的关系可能会或可能不会有结果

一个Company可以有一个或多个Employees

我需要SELECT公司基于first_nameEmployee,但员工的first_name不匹配时不显示。

这是我目前拥有的。

$companies = Company::with(array('employees' => function($q) { 
    $type = (!empty(Input::get('company_search_employee'))) ? '%' . Input::get('company_search_employee') . '%' : '%'; 
    $q->where('employees.first_name', 'LIKE', $type); 
}))->get(); 

员工first_name如果Company没有任何Employee小号

必须被忽略,但它显示了公司数据,即使员工不匹配。该员工只是隐藏起来。

我该怎么做呢?

回答

1

试试这样:

$companies = Company::whereHas('employees', function($q){ 
    $type = (!empty(Input::get('company_search_employee'))) ? '%' . Input::get('company_search_employee') . '%' : '%'; 
    $q->where('first_name', 'LIKE', $type); 
})->get(); 

,或者如果它不工作添加 '雇员' where子句:

$q->where('employees.first_name', 'LIKE', $type); 
+0

谢谢!完美地工作。 – MegaXLR