Laravel OrderByのリレーションシップ数
2023-11-18 16:24:38
質問
私は最も人気のあるハッカソンを取得しようとしていますが、それにはそれぞれのハッカソンの
partipants->count()
. 少し理解しにくかったらすみません。
以下のような形式のデータベースを持っています。
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)をしたような気がしています。
関連する hackathonParticipants の最も多い数に基づいている最も人気のある hackathons を取得しようとする場合、どうすればよいでしょうか?
どのように解決するのですか?
編集:Laravel 5.2以降を使用している場合、kJamesyの回答を使用してください。 参加者とハッカソンをすべてメモリにロードする必要がなく、ページ分割されたハッカソンとそれらのハッカソンの参加者数だけなので、おそらくもう少しうまくいくでしょう。
を使用することができるはずです。
Collection
's
sortBy()
と
count()
メソッドを使用すると、かなり簡単にこれを行うことができます。
$hackathons = Hackathon::with('participants')->get()->sortBy(function($hackathon)
{
return $hackathon->participants->count();
});
関連
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み】Weird PHP error: 'Can't use function return value in write context'.
-
[解決済み】PHP 7.2 - Warning: count(): パラメータは配列かCountableを実装したオブジェクトでなければならない [解決済み]
-
[解決済み】変な電話番号を生成するフェイカー?
-
[解決済み】XAMPPのphpMyAdminで「設定にあるcontroluserの接続に失敗しました。
-
[解決済み】XAMPPエラー: www.example.com:443:0 サーバー証明書に、サーバー名と一致するIDが含まれていません。
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み】count()パラメータは配列かlaravelのcountableを実装したオブジェクトでなければならない
-
[解決済み】PHPのクラスが見つからないが、インクルードされている
-
[解決済み] Laravel Eloquentを使用して複数のWhere句クエリを作成する方法?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Weird PHP error: 'Can't use function return value in write context'.
-
[解決済み】「初期通信パケットの読み込み」でMySQLサーバーに接続できなくなり、システムエラーになる。0
-
[解決済み】mysqli_result クラスのオブジェクトを文字列に変換できない
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み】Phpのincludeが機能しない? 関数がincludeされない
-
[解決済み】count()パラメータは配列かlaravelのcountableを実装したオブジェクトでなければならない
-
[解決済み] [Solved] Fatal error: 非オブジェクトのメンバ関数fetch_assoc()の呼び出し [重複]。
-
[解決済み】mysqli::query(): mysqli をフェッチできない
-
[解決済み】警告: file_get_contents(): https:// ラッパーがサーバー構成ですべて無効になっています。
-
[解決済み] SSLエラー SSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗しました。