2017-05-10 2 views
0

나는 다음과 같은 쿼리가 :Laravel 설득력이 - 열망로드 쿼리는 제한()에 의해 제한되고

SELECT * 
FROM myTable AS ABB1 
    LEFT JOIN myOtherTable AS ABB2 ON ABB1.id = ABB2.myTable_id 
WHERE my_column = 25 
ORDER BY myTable.id DESC 
LIMIT 5; 
:

MyTable::where('my_column', '=', 25)->with('myOtherTable') 
            ->orderBy('id', DESC)->limit(5); 

내가 나에게 다음과 같은 원시 SQL 쿼리에 analogoous 결과를 가지고 위 싶습니다을

는 위의 5 행에 결과를 myOtherTable에서 정보를 대응 다음 제한과 함께 myTable 모든 것을 찾을 수 있습니다.

위의 설득력있는 설명을 실행하면 두 개의 SQL 쿼리가 처리됩니다. 첫 번째는 같은 모양이 쿼리 반환 (7 개) 결과 항목라고 말하면

SELECT * 
FROM myTable 
WHERE my_column = 25 
ORDER BY id DESC; 

을,하지만 난 limit() 기능 (. 즉 limit(5))에 적은 수의 전달 후 해당 열망 로딩 쿼리는 다음과 같이 표시됩니다

SELECT * 
FROM myOtherTable 
WHERE id IN(1, 2, 3, 4, 5); 

열망하는로드 쿼리 자체는 5 개의 항목으로 제한됩니다. 여기에는 제한이 없어야합니다. 위의 IN 조건부 항목의 수는 7 (또는 첫 번째 쿼리에서 반환 된 개수가 무엇이든간에)이어야합니다. 두 번째 쿼리를 실행 한 후에 만 ​​제한을 적용해야합니다.

나는 어떻게 이런 일을 Eloquent와 함께 할 수 있습니까?

답변

0

웅변술의 join을 사용할 수 있습니다. 당신이 열망 부하에 MyTable에 관계를 원하는 경우

MyTable::join('myOtherTable', 'column_id', '=', 'id') 
    ->where('my_column', '=', 25) 
    ->with('myOtherTable') 
    ->orderBy('id', DESC) 
    ->limit(5); 

with 만입니다.