복잡한 데이터 관계를 처리할 때 원하는 데이터를 얻는 것이 어려울 수 있습니다. Laravel에서 중첩 관계는 여러 데이터베이스 테이블에서 상호 연결된 데이터를 검색하기 위한 간단한 메커니즘을 제공합니다.
특정 이벤트에 가입한 사람의 목록을 검색하는 작업을 생각해 보세요. 데이터베이스 구조에는 이벤트, 도시, 회사 및 사람에 대한 테이블이 포함되며 이들 사이에는 다양한 수준의 관계가 있습니다.
이벤트 모델은 City와 속하는 관계를 갖고 있지만 City는 회사 및 이벤트와 hasMany 관계가 모두 있습니다. Company는 Person과 hasMany 관계가 있고 Person은 피벗 테이블(event_scores)을 통해 Event와 ownToMany 관계가 있습니다.
원하는 데이터를 검색하려면 with() 메서드를 사용하여 원하는 중첩 관계를 정의합니다. 다음 쿼리는 단일 데이터베이스 호출로 이벤트와 해당 중첩 데이터를 가져옵니다.
return Event::with('city.companies.persons')->get();
이 쿼리는 이벤트 모델에서 시작하여 Person 모델까지 중첩 관계를 원활하게 탐색합니다. 연관된 도시, 회사 및 사람과 함께 이벤트 개체를 반환합니다.
사람 테이블에서 특정 필드만 필요한 경우 with( ) 콜백:
return Event::with(['city.companies.persons' => function ($query) { $query->select('id', 'firstname', 'lastname'); }])->get();
이 사용자 정의 쿼리는 개인 테이블에서 ID, 이름 및 성 필드만 검색하여 페이로드 및 성능 향상.
Laravel의 중첩 관계를 사용하면 복잡한 데이터 구조를 쉽게 검색할 수 있습니다. with() 메소드를 활용하고 모델 간의 관계를 이해함으로써 단일 데이터베이스 호출로 상호 연결된 데이터를 가져올 수 있으므로 Laravel 개발 프로젝트에서 시간과 노력을 절약할 수 있습니다.
위 내용은 Laravel에서 중첩 관계가 있는 복잡한 데이터 구조를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!