laravel 에서 관련 모델 조회 선택 적 필드
5241 단어 php
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.