2017-10-21 1 views
-1

돌아 가기 Laravel의 데이터를 처리합니다.는 어디

Laravel 5.4에서도 동일한 결과를 얻으려면 어떻게해야합니까? 내가 만들고있는 응용 프로그램의 데이터베이스는 이미 구축되어있어 가득 차 있으며 엉망이므로 Laravel이 가지고있는 대부분의 "자동화 된"수퍼 제한적 기능은 상자에서 작동하지 않습니다.

예를 들어 내가 가져 오는 국가 코드가 있는데 그럴 필요가 있지만 어떤 경우에는 다른 테이블에있는 국가 이름으로 변환해야하는 경우가 있습니다.

$countryResult = Country::where('country_code', $item['country_code'])->first(); 
    $countryArray = $countryResult->toArray(); 
    $item['country'] = $countryArray['country_name']; 

어떻게 든 더 우아한 방법으로 그것을 얻을 수 있습니다

는 지금은 그냥 모델에서 데이터를 검색하고 어디서나 내 컨트롤러에 있나요? 접근자를 시도했지만 어떤 이유로 든 내 용도로 사용할 수 없습니다.

+1

해당 코드 예제의 경우 작동합니까? '$ item [ 'country'] = Country :: where (...) -> first() -> country_name;'. 그런데'$ item'은 무엇입니까? 그것은 당신이 반응 할 배열인가요? – Parziphal

+0

'$ item'은이 컨트롤러에 의해 나중에 뷰로 보내지는 배열입니다. –

+0

나는 Laravel이 일반적으로 작업 흐름과 데이터베이스를 형성한다는 것을 지적하고 싶었지만, 당신의 경우에는 작업하고있는 DB와 일치하도록 Laravel을 만들어야하므로, 다소 많았 기 때문에 엄격하게 따라갈 수는 없습니다 Laravel의 '표준'은 필요한만큼 할 수 있습니다. 예 : 모델에 더 많은 코드가 필요합니까? 그냥 해. – Parziphal

답변

0

select 쿼리를 사용하여 선택을 특정 열로 제한 할 수 있습니다.

$countryName = Country::select('country_name') 
       ->where('country_code', $item['country_code']) 
       ->first(); 
+0

완벽하게 작동하지만 컨트롤러에있는 전체 데이터 프로세스의 간단한 한 줄 호출을 수행 할 수 있도록 모델에 많은 양의 코드를 넣고 참조 할 수 있습니까? 아니면 그냥 컨트롤러에 있어야합니까? 나는 이것이 "표준"인 것을 볼 수 있지만, 내 컨트롤러와 모델에서'-> fetchForDashboard()'를 할 수 있기를 원하기 때문에 나의 경우에는 모델의 목적을 무효로 만들 수있다. –

+0

확실히이 모델을 모델의 정적 메소드로 옮기면 모델에 대한 저장소를보다 잘 구현하고 저장소에 구현할 수 있습니다. –

+0

굉장! 리포지토리는 제가 익숙하지 않은 것입니다. 그것이 내가 찾는 물건이 될 것 같아. –