laravel 에서 관련 모델 조회 선택 적 필드

5241 단어 php
Laravel 을 사용 하 는 관련 조회 에서 우 리 는 자주with방법 으로 1+N을 피한다. 조 회 는 하지만 with목표 와 관련 된 모든 필드 를 모두 조회 하 므 로 강박 증 이 있 는 PHPer 에 게 는 당연히 발생 할 수 없습니다.
첫 번 째 방법:모형 에 쓰 고 고정 시 키 는 것
편리 하고 간결 하지만 서로 다른 수요 에 따라 서로 다른 필드 를 연결 할 수 없습니다.모델 관련 에서 죽 으 면 모든 관련 필드 가 똑 같 습 니 다.
user 모델 에 관련 함 수 를 쓰 고 한 쌍 이 많 습 니 다.이 모델 은 APP\\Models 아래 에 두 고,기본 값 은 App 아래 에 두 기
1 public function hasPost(){
2     return $this->hasMany('App\Models\post','  ','  ')->select('id','content','title');
3 }

두 번 째 방법:조 회 를 작성 하 는 과정 에서 관련 필드 를 지정 할 수 있 습 니 다.
이런 방법 은 비교적 자 유 롭 고 각자 의 논리 컨트롤 러 에서 실현 되 며 비교적 자유롭다
1 public function test(User $user)
2 {
3     $return_datas  = $user->with(['hasPost'=>function($query){
4                                         $query-select('  ','  ','content','title');
5                                      }) ->get();
6 }

 
세 번 째 방법:Laravel 의 조회 범 위 를 이용 하여 밀봉 합 니 다.기본 모델 baseModel 을 정의 한 다음 에 모든 모델 이 기본 모델 baseModel 에 계승 되 거나 trait 를 사용 합 니 다.
기본 모델 에서
1 class BaseModel extends \Eloquent{
2     public function scopeWithOnly($query, $relation, Array $columns)
3     {
4         return $query->with([$relation => function ($query) use ($columns){
5             $query->select(array_merge(['id'], $columns));
6         }]);
7     }
8 }

우리 의 일반적인 Model 류 는 모두 기본 클래스 를 계승 합 니 다.
1 class User extends BaseModel{
2     public function hasPost()
3     {
4          return $this->hasMany('App\Models\post')
5     }
6 }

그리고 논리 적 으로 원 하 는 걸 이 루 세 요.
1 1 public function test(User $user)
2 2 {
3 3     $return_datas  = $user->with(['hasPost',['  1','  2',.....]) ->get();
4 6 }

 
다음으로 전송:https://www.cnblogs.com/xzj8023tp/p/9254449.html

좋은 웹페이지 즐겨찾기