2016-08-21 2 views
1

내 사용자를위한 검색 시스템을 구축하려고합니다.관계 조건에 따라 모든 사용자 검색

첫 번째 부분은 내가 검색 한 모든 정보가 동일한 테이블에있는 것처럼 쉽습니다.

두 번째 부분은 제공된 IP 주소를 기반으로 사용자를 검색하는 작업입니다. 이를 위해 내가 사용하고 있습니다 :

$users = User::with(array('login' => function($q){ 
       $q->where('ip_address', Input::get('ipaddress')); 
      }))->paginate(10); 

그러나이 오히려 IP 주소 요구 사항을 충족하는 단지 것보다, 모든 사용자를 반환합니다. 내가 어디로 잘못 가고 있니? 아니면 이것을 할 수있는 더 쉬운 방법이 있습니까?

+0

당신이 원하는 것은'INNER JOIN'입니다. – nCrazed

답변

2
$users = User::whereHas('login', function ($q) { 
    $q -> where('ip_address', Input::get('ipaddress')); 
}) -> paginate(10); 

사용해보기!

+0

방금'whereHas'을 발견하고 알아 냈습니다. 그러나 이것은 정확하게 내가 그것을했던 방법이다! – James

+0

그렇지 않습니다. 'with()'를 사용하면'where' 조건은'login'을 포함하여 모든 사용자를 returnd하고, login 관계가 조건에 맞지 않으면'null' 엔티티처럼 포함됩니다. 그러나 whereHas를 사용하면 관계 조건에 따라 사용자를 필터링합니다 –