laravel 의 관련 조회 with 에 대한 질문

표 구조
메 인 테이블 구조:

Create Table

CREATE TABLE `user` (
 `uid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
 `email` varbinary(255) NOT NULL,
 PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=114001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
부표 구조:

CREATE TABLE `user_options` (
 `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
 `uid` mediumint(8) unsigned NOT NULL,
 `age` tinyint(3) NOT NULL,
 `sex` tinyint(1) NOT NULL,
 PRIMARY KEY (`id`),
 KEY `options_key` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=114001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
그리고 seed 를 사용 하여 무 작위 데이터 10W 바 를 삽입 합 니 다.
테스트
각각 User,Options 모델 을 만 들 고 일대일 관 계 를 맺 습 니 다.
코드 는 다음 과 같 습 니 다:

User::with(['options'=>function($query){
      $query->where('sex','=','1');
    }])->paginate(15);

laravel debug    SQL    :

select count(*) as aggregate from `user`
select * from `user` limit 15 offset 0
select * from `user_options` where `user_options`.`uid` in ('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15') and `sex` = '1'
결론.
첨부 된 필 터 를 사용 하여 목록 을 선별 해 야 한다 면 with 를 사용 하 는 것 은 좋 지 않 습 니 다!
with 의 뜻 을 사용 하여 주 정 보 를 확정 할 때 조건 에 맞 는 별표 정 보 를 나열 하여 단일 항목 또는 소량의 주 표 정보 또는 주 표 정보 선별 에 적합 합 니 다.
이상 의 이 간단 한 이야기 laravel 의 관련 조회 with 의 문 제 는 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 여러분 들 이 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기