我想要獲得最受歡迎的黑客馬拉松,它需要按各自的黑客馬拉松的partipants->count()
進行訂購。對不起,如果這有點難以理解。Laravel OrderBy關係計數
我有以下格式的數據庫:
hackathons
id
name
...
hackathon_user
hackathon_id
user_id
users
id
name
的Hackathon
模式是:
class Hackathon extends \Eloquent {
protected $fillable = ['name', 'begins', 'ends', 'description'];
protected $table = 'hackathons';
public function owner()
{
return $this->belongsToMany('User', 'hackathon_owner');
}
public function participants()
{
return $this->belongsToMany('User');
}
public function type()
{
return $this->belongsToMany('Type');
}
}
而且HackathonParticipant
被定義爲:
class HackathonParticipant extends \Eloquent {
protected $fillable = ['hackathon_id', 'user_id'];
protected $table = 'hackathon_user';
public function user()
{
return $this->belongsTo('User', 'user_id');
}
public function hackathon()
{
return $this->belongsTo('Hackathon', 'hackathon_id');
}
}
我試過Hackathon::orderBy(HackathonParticipant::find($this->id)->count(), 'DESC')->take(5)->get());
但我覺得我犯了一個很大的錯誤(可能是錯誤的) $ this-> id),因爲它根本不起作用。
我該如何去嘗試獲得最流行的黑客馬拉松,這是基於相關黑客馬拉松參與者的最高數量?
如何改變asending/desecnding? – FooBar
'sortBy(Closure $ callback,$ options = SORT_REGULAR,bool $ descending = false)'只需將第三個參數設置爲true即可。 – user3158900
排序依據不會在數據庫級別執行該操作...因此,它無法在分頁時正常工作!儘管如此,當你返回一套完整的套餐時很有用。 –