2016-09-24 5 views
-1

내가 항상 동일한 데이터가 필요하고 일부 내비게이션 링크를 채우는 뷰 부분이 있고 그 데이터를 view composer에 제공하면 기본 페이지도 필요하고로드하는 경우에 대해 걱정할 필요가 있습니다. 데이터? 다른 말로하면 조심하지 않으면 db 쿼리를 복제 할 수 있습니까?Laravel View :: composer()는 동일한 데이터를 두 번 호출 할 위험이 있습니까?

+0

질문의 명확화 :보기 구성자가로드 한 모든 내용이 해당보기 또는보기 부분을 포함하는 모든 페이지 (항상 boot()에 있음)에서 * 항상 * 사용 가능 *하다고 가정하는 것이 더 나은 생각입니다. 메소드, 결국), 내가 하나를 추가 할 때, 나는 즉시 다른 곳에서 동일한 데이터를 다시 호출하지 않는지 확인하기 위해 내 코드를 즉시 조사해야한다. ...하지만 아마도 지금 생각해 보면 분명합니다. 더 많은 코딩, 더 적은 질문에 대한 시간 : :) – mwal

+0

나는 뷰 합성어를 통해 뷰 부분에 변수를 넘겨주는 ** 실험을 통해 ** 뷰의 후속 부분, 즉 variable은 composer가 첨부 된 partial에 대한 @include 호출과 동일한 범위에 존재하지 않습니다. 이것은 사물을 복잡하게합니다. 질문은 여전히 ​​남아 있습니다 : 작곡가를 추가하는 데 가장 좋은 것은 무엇입니까? 가장 좋은 방법은 무엇입니까? (예 : 초기 또는 리팩터링의 일부로) – mwal

+0

View :: composer를 View :: creator로 변경하려고 시도했지만 여전히 뷰의 범위에서 @include를 사용할 수있게 만들지 않았습니다. (AppServiceProvider에서) 그것에 등록 된 작곡가/생성자가있는 partial에 대한 호출. – mwal

답변

1

짧은 대답은 네입니다. 같은 데이터를 두 번 부를 수도 있습니다.

시도 뷰가 반환되기 전에,

DB::enableQueryLog(); 
모든 데이터베이스 호출하기 전에

하고, 결국 추가,이 할 : 다음

var_dump(DB::getQueryLog()); 

같은 데이터를 호출하는 경우 당신이 볼 수 있습니다 쿼리 로그에서 두 번 나는이 지금 이해하는 방법

+0

세밀하게 디버깅하려면 [Laravel DebugBar] (https://github.com/barryvdh/laravel-debugbar)를 설치하는 것이 좋습니다. – Ian

0

요약 :

부분의 필요 데이터 다른보기에 사용하지 않으면, 당신은 컨트롤러에 그것을 위해 전화를 추가 할 수 있지만 그에 등록 작곡가로하지 않습니다 부분. 이 모든 것은 코드의 볼륨을 줄이기 위해 컨트롤러에서 전화를받는 것입니다. (그러나 부분 뷰가 둘 이상 호출되면 코드 DRY가 유지됩니다).

또한 페이지의 다른 부분에을 사용하는 부분의 필요 데이터 , 당신은 당신이 데이터에 대한 호출을 제거 할 수 없습니다로, 뷰 작곡가를 추가하는 방법에 대해 두 번 생각해야하는 경우, 그냥 것 위의 질문에 대한 내 의견에서 설명한 것처럼 어떤 경우에도 컨트롤러에서 변수를 전달해야하므로 중복 호출이 필요함을 의미합니다 (범위가 공유되지 않기 때문에).