>source

나는 3 개의 테이블, 재산, 시설, 이미지를 결합하고있다. 속성에는 많은 시설이 있고 많은 이미지가 있습니다.

내 쿼리에서 시설과 이미지가 몇 번이고 각 루프가 1 시설과 1 이미지를 얻는 동일한 속성을 반복합니다. 내가 달성해야 할 것은 속성별로 반복되고 속성이 가진 모든 시설과 이미지를 얻는 것입니다.

       $properties = DB::table('properties')
        ->join('facilities', 'properties.id', '=', 'facilities.property_id')
        ->join('images', 'properties.id', '=', 'images.property_id')
        ->select('properties.*', 'facilities.feature_name', 'images.img_url')
        ->paginate(10);

부동산 모델

public function facilities() {
    return $this->hasMany(Facility::class);
}
public function images() {
    return $this->hasMany(Image::class);
}

시설 모델

public function property() {
    return $this->belongsTo(Property::class);
}

이미지 모델

public function property() {
    return $this->belongsTo(Property::class);
}

   @foreach ($properties as $property)
        {{ $property->title }}, 
    @endforeach

  • 답변 # 1

    관계를 열심히로드 할 수 있습니다.

       $properties=\App\Models\Property::with(['facilities:property_id,feature_name','images:property_id,img_url'])->paginate(10);
    
    

    블레이드에서는 다음과 같이 할 수 있습니다.

    @foreach ($properties as $property)
            {{ $property->title }}
              @foreach ($property->facilities as $facility)
                   {{ $facility->feature_name}}
              @endforeach
            // for the images you can do the same 
              
        @endforeach
    
    

관련 자료

  • 이전 c - `select`를 호출하지 않은 FD_ISSET의 결과
  • 다음 oauth 2.0 - ASPNET Core 앱에 어떤 종류의 부여 유형을 사용해야합니까?