1
웹 응용 프로그램 용 API를 빌드하고 있습니다. 구축중인 맞춤 경로 중 하나를 사용하여 특정 위치의 데이터 집합을 사용하는 데이터베이스의 모든 보고서를 가져올 수 있습니다. 현재이 경로는 약간의 병목 현상이며 속도를 높이려고합니다.다 대 다 관계의 Object 필드를 데이터베이스에서 가져 오기
보고서에는 여러 데이터 집합이 포함될 수 있습니다. 데이터는 여러 보고서에 속할 수도 있습니다. 데이터 테이블에는 다른 (외부) 데이터베이스의 데이터 세트의 모든 위치가 포함됩니다.
내 데이터베이스는 다음과 같이 명확히하기 :Report pivot table Data
|-----------| |-----------| |-------------|
| Report_id |-------<| Report_id |>-------| Data_id |
| | | Data_id | | Location_id |
|-----------| |-----------| |-------------|
나는 특정 데이터 세트를 사용하여 모든 보고서를 얻기 위해 다음과 같은 스크립트를 작성했지만이보다 효율적으로 수행 할 수 있습니다 같은 느낌.
$reports = Report::whereIn('id',
\DB::table('report_data')->select('report_id')->whereIn('data_id',
\DB::table('data')->select('id')->where('location_id', '=', $id)
)
)->get();
나는 여기에 뭔가 분명한 것을 놓치고 있습니까? 아니면 이것을 수행하는 가장 좋은 방법입니까? 모델
보다 큼 당신의 대답을위한 ks! 성능면에서 나는 큰 이점을 얻지 못하지만,이 방법을 사용하는 것은 더 좋은 방법입니다. 그러나 나는 이것을 지금 사용할 것이다. – Edwardo
적절한 관계를 제공하고 (DB 쿼리 대신) ORM을 사용하면 프로젝트가 확장 될 때 코드를 쉽게 만들 수 있습니다. 더 복잡한 쿼리는 'with()'를 사용하여 단순화 할 수 있습니다. 대답이 유용 할 것 같으면. pls 올바른 것으로 표시 –
예. ('ApplicationChild.ElectricalSection') -> 함께 ('ApplicationChild') -> ('ApplicationChild') -> ('ApplicationChild.District')와 함께 $ 데이터 [ '응용 프로그램'] = 응용 프로그램 :: 응용 프로그램 :: 함께 -> - > ('ApplicationContractorSupervisor Master') -> ('ApplicationContractorSupervisorMaster.ContractorSupervisor') -> with ('District') -> first(); –