2016-03-02 96 views
0

我有三個表,users,branchesjobsusers表與branches表具有一對一的關係,並且與jobs表具有一對多關係。分行負責上傳工作,users表可以包括各種類別,包括分行。 branchesjobs表都具有user_id作爲外鍵。 現在,我想通過他們上傳的作業數量來獲取分支機構列表,並按照最高上傳次數對它們進行排序。根據Laravel 5中的子關係計數排序數據

我能夠顯示分支列表以及他們發佈的作業數量,如下面的代碼所示,但我想根據發佈的作業數量進行排序。我怎樣才能做到這一點?

@foreach(\App\Branch::all() as $branchesJob) 
<div class="col-lg-3 col-xs-3"> 
    <div class="small-box bg-olive-active"> 
    <div class="inner"> 
     <h3>{{\App\Job::where('user_id','=',$branchesJob->user->id)->count()}}</h3> 
     <p>{{$branchesJob->branch_name}}</p> 
    </div> 
    <a class="small-box-footer" href="{{(route('admin.branch_job.show',$branchesJob->id))}}"> 
              More info 
              <i class="fa fa-arrow-circle-right"></i> 
             </a> 
    </div> 
</div> 
@endforeach 
+0

如果您發佈表結構而不是僅僅解釋它,那將是有用的 – cmorrissey

+0

爲什麼在視圖中進行數據庫調用?這是一個不好的做法。 – Drudge

回答

0

謝謝你的回覆。我能夠通過使用sortBy()count()方法來實現。

$user = \App\User::where('category','=','Branch')->with('job')->get()->sortBy(function($u){ 
     return count($u->job); 
}, $options = SORT_REGULAR, $descending = true); 

感謝這篇文章! Laravel OrderBy relationship count

0

你不能把它做在模板中檢索所有記錄。而且你不能通過單獨的集合函數(計算關係)來完成它。

爲標記的正確答案解釋這裏我會通過,一個訂單join子句做到這一點: Laravel Eloquent sort by relation table column