2017-03-23 3 views
0

저는 Laravel을 사용하여 응용 프로그램을 작성하고 있습니다. 다른 페이지에서 Query를 실행해야하는 곳. 그래서 같은 쿼리를 여러 컨트롤러에서 실행해야했습니다. 하지만 이건 코딩의 좋은 습관이 아니라고 생각합니다. 어디에서 싱글을 쓰고 다시 쓰지 않고 여러 컨트롤러로 실행할 수 있습니까? 나는 또한 웅변술과 열망하는로드를 알고 있습니다. 만약 내가 큰 쿼리를 가지고 두 개의 세 테이블을 합치면 어떻게 구현합니까?쿼리 중복성을 줄이는 방법은 무엇입니까?

감사합니다.

+0

질문을 완전히 이해하지 못했습니다. 동일한 쿼리에 대해 _code_를 중복하지 않도록하거나 동일한 쿼리를 여러 번 실행하지 않도록하는 방법을 묻고 있습니까? –

+0

같은 쿼리를 여러 번 실행하지 마십시오 – User57

+0

쿼리는 무엇을하고 있습니까? –

답변

1

헬퍼 (app/Helpers) 폴더에 새 PHP 파일을 만들고 거기에 새 클래스를 만들어야합니다. 나는 예를 들어 Main을 사용한다.

namespace App\Helpers; 
class Main 
{ 
    static public function getSomething($id) { 
     // ... DO something 
     return var; 
     } 
} 

다음 당신은 당신이 사용하는 앱 \ 도우미 \ 홈페이지 '어디에서나 프로젝트

Main::getSomething($id); 

의에서 사용할 수 후/app.php

'aliases' => [ 
    ... 
    'Main' => App\Helpers\Main::class 
] 

을 config (설정)에 추가해야합니다; ' 물론

이 기능을 사용하면 모든 컨트롤러에서이 기능을 사용할 수 있으며 매번 반복하지 않아도됩니다.

0

모든보기와 데이터 공유를 사용할 수 있습니다.

뷰 Facade를 통해 데이터를 공유하면됩니다. 이 모든 뷰를 통해 데이터에 액세스 할 수 있습니다. 여러 컨트롤러에서 데이터를 쿼리 할 필요가 없습니다. 당신의

AppServiceProvider 클래스> 부팅 방법

// write query 
$query = User::all(); 

// Share data 
View::share("user", $query); 

또한 유사한 시나리오를 달성하기 위해 View Composer를 사용할 수있는 클래스의 상단에를 분명히 \ 지원 \ 외관 \보기를 사용하는 것을 잊지 마세요 .

관련 문제