>  Q&A  >  본문

테이블을 복제하지 않고 단일 행의 모든 ​​데이터를 검색하도록 Laravel Join을 최적화하십시오.

PHP와 Laravel 7을 사용하여 4개의 MySQL 테이블이 있습니다

  1. 회원
  2. 공제
  3. 결제
  4. 결제 공제

이제 각 회원의 단일 결제 및 기타 모든 공제 항목을 연속적으로 표시하고 싶습니다. (한 사람이 한 번만 결제한다고 가정)

데이터베이스 구조는 다음과 같습니다

내가 표시하고 싶은 HTML 테이블입니다

제가 사용하고 있는 쿼리인데 데이터가 중복됩니다.

으아악

결과 배열은 파생 항목을 기반으로 각 멤버를 반복합니다.

이 데이터를 더 좋게 얻을 수 있는 방법이 있나요? 각 구성원에 대한 중첩된 공제 배열과 같은 것입니까?

모델입니다

회원

으아악

결제

으아악

공제

으아악


P粉410239819P粉410239819251일 전411

모든 응답(1)나는 대답할 것이다

  • P粉239089443

    P粉2390894432024-01-17 09:20:05

    모델을 구축할 때 매우 가깝고 올바른 방향으로 가고 있습니다. 누락된 것은 다른 쿼리를 생성하지 않고 관계를 로드하는 방법입니다. 컨트롤러를 보면 내부 관계를 로드하는 표준 방법을 볼 수 있습니다. 이것이 귀하의 우려를 해결하는 더 나은 개념이기를 바랍니다.

    참고용: https://laravel.com/docs/9.x/eloquent-relationships#lazy-eager-loading

    이렇게 하면 향후 N+1 문제도 피할 수 있습니다. ORM(객체 관계형 매핑)의 "N+1 선택 문제"란 무엇입니까? N+1 问题,请参阅什么是 ORM(对象关系映射)中的“N+1 选择问题”? 有关 N+1 N+1< /p>에 대한 세부정보

    멤버모델

    으아악

    결제 모드

    으아악

    추론 모델

    으아악

    멤버 컨트롤러:

    으아악

    회신하다
    0
  • 취소회신하다