복붙노트

[SQL] Laravel 웅변 테이블에 가입하고 관련 계산하기

SQL

Laravel 웅변 테이블에 가입하고 관련 계산하기

어떻게 설득력 고려 다음과 같은 테이블 구조에 복용과 조인을 사용합니까 :

나는 속성 테이블이

---------------------
ID    | Name 
---------------------
1     | Property Name

나는 방을보다

----------------------
RoomID | Property
----------------------
A-212  | 1
---------------------- 
F-1231 | 1

여기에 속성 외래 키입니다 나는 모든 속성을 얻을 그들은 각각이 어떻게 많은 객실 카운트 원하는 것보다

같은 모든 외모를 검색 쿼리

   class PropertiesRepository extends EloquentBaseRepository implements PropertiesInterface
{

    use TaggableRepository;

    /**
     * Construct 
     * @param Properties $properties 
     */
    public function __construct( Properties $properties )
    {
        $this->model = $properties;
    }
     /**
     * Get all properties joining rooms
     * @return Properties
     */
    public function getAll()
    {
        return $this->model->get();
    }
}

어떻게 원하는 결과를 얻기 위해이 쿼리를 확장 할 수 있습니까?

해결법

  1. ==============================

    1.

    $this->model->leftJoin('Rooms', 'Properties.ID', '=', 'Rooms.Property')
      ->selectRaw('Properties.*, count(Rooms.RoomID) as RoomsCount')
      ->groupBy('Properties.ID')
      ->get();
    
  2. ==============================

    2.귀하의 재산 모델 클래스의 관계를 정의합니다 :

    귀하의 재산 모델 클래스의 관계를 정의합니다 :

    <?php 
    
    namespace App\Models;
    
    class Property extends Model {
      public function rooms() {
        return $this->hasMany(Room::class);
      }
    }
    
    
    $properties = Property::withCount(['rooms'])->get();
    

    이 결과에 rooms_count을 추가합니다.

  3. from https://stackoverflow.com/questions/24648554/laravel-eloquent-to-join-table-and-count-related by cc-by-sa and MIT license