2016-10-25 3 views
2

여기에 내 현재 쿼리입니다 : 당신이 보는대로두 가지 다른 테이블을 검색하는 방법은 무엇입니까?

$q = $request->q; 
-- first table 
$n_arr = news::where('title','like',$q)->orWhere('description','like',$q)->get(); 
-- second table 
$p_arr = productions::where('title','like',$q)->orWhere('description','like',$q)->get(); 

, 현재 내가 할에 의해 두 개의 서로 다른 쿼리가. 하지만 이제는 ->paginate()을 사용해야합니다. 따라서 모든 결과를 페이징하는 단일 쿼리가 필요합니다. union 조항이 필요합니다.

즉, 위의 두 쿼리 결과를 결합해야합니다.

Laravel에서 어떻게 할 수 있습니까?

+0

그들을 연결하기 위해 'UNION'을 사용하십시오. http://stackoverflow.com/questions/6574564/php-mysql-search-multiple-tables-using-a-keyword – Karthi

+0

이 두 테이블을 연결하는 열이있는 경우 JOIN을 확인하십시오. – RiggsFolly

+0

@RiggsFolly 아니요 그 (것)들의 사이에 일반적인 란. – stack

답변

0

이렇게하는 한 가지 방법은 create pagination manually입니다.

또 다른 방법은 두 페이지에서 skip()take() 메서드를 사용하여 현재 페이지의 결과를 얻는 것입니다.

$n_arr = news::where('title','like',$q)->orWhere('description','like',$q)->->skip($page * $perPage)->take($perPage)get(); 
$p_arr = productions::where('title','like',$q)->orWhere('description','like',$q)->skip($page * $perPage)->take($perPage)->get(); 
+0

여전히'$ n_arr'과'$ p_arr' 두 가지 결과가 있습니다. 어느쪽에'-> render()'를 써야합니까? – stack

+0

아직도이 문제를 해결하기 위해 노력하고 있습니다 ... 두 개의 서로 다른 쿼리에서 페이지 매김을 어떻게 사용해야하는지 잘 모르겠습니다. – stack

+0

@stack이라면'Paginator' 객체를 수동으로 Craeting하는 경우에만'render()'해야합니다. 'skip()'과'take()'를 사용한다면'render()'없이 수동으로 링크를 만들어야합니다. –

관련 문제