2016-10-27 6 views
0

ケース注文二hasManyThrough関係

プロジェクト
id | Name

ハウスタイプ
id | Name | Project_id

タイプ
id | Name | House_type_id

住宅
id | Building_nr | Type_id

すべてhouses(/アパートメントには)type(XLアパート、小さなアパート)でrelationshipを持っています。 Aタイプはtypes(別荘、戸建住宅)のrelationを持ち、はprojectrelationを持っています。

したがって、3つのone-to-many relationshipsがここで使用されています。

建物番号に基づいて家をorderにしたいと思います。

私は現在、私のデータベースからデータを取得しています方法:

$project = Project::whereSlug($slug)->with(array('brokers', 'houseTypes.types.houses' => function($query) { 
     $query->orderBy('bnr'); 
    }))->first(); 

しかし、これは最後の関係(家屋)はそのbnr(建物番号)によって順序付けさにはなりません。私は私のビューにデータを読み込む方法

@foreach($project->houseTypes as $houseTypes) 
    @foreach($houseTypes->types as $types) 
     @foreach($types->houses->sortBy('bnr') as $house) 
      <tr class="table-row"> 
       <td>{{$house->bnr}}</td> 
       <td>{{$house->type->houseType->title}}</td> 
       <td>{{$house->type->rooms}}</td> 
       <td>&euro;{{$house->price}}</td> 
       <td>{{$house->living_surface}}m<sup>2</sup></td> 
       <td>{{$house->water}}m<sup>2</sup></td> 
       <td>{{$house->location}}</td> 
      </tr> 
     @endforeach 
    @endforeach 
@endforeach 

私が探しています結果を取得するための最も効率的な/最良の方法は何ですか?

編集:
今のところ私はビル番号(テーブルの行)に基づいてテーブルをソートするためのjavascriptを使用する別のソリューションがあります。興味のない場合は、正しいクエリを使用しても解決できますか?

答えて

0

この

Houses::whereHas('project', function($q){ 
    $q->where('slug','like',$slug); 
})->with('/* All your relationships */')->orderBy('bnr'); 
のように気にいらをお試しください
関連する問題