2017-10-16 14 views
2

私は2つのコレクションを持っています。 車両と表示。 ビュー数でソートされた車両のリストを戻したいと思います。関連する(hasMany)ドキュメントの数をソート

マイVehicleクラス

class Vehicle extends Moloquent { 

    protected $dates = ['date_assigned']; 

    public function associated_views() 
    { 
     return $this->hasMany('App\Collections\View'); 
    } 

} 

そして、私のViewクラス

class View extends Moloquent { 

    public function associated_vehicle() 
    { 
     return $this->belongsTo('App\Collections\Vehicle'); 
    } 

} 

私は$のビヒクル> associated_views->数()で、事実の後にビューの数を得ることができますが、これはフィールドごとに並べ替えてからすべてのレコードを取り戻すことはできません。これは可能ですか?

+0

この記事はあなたを助けることができるかどうかを確認! https://stackoverflow.com/questions/18861186/eloquent-eager-load-order-byまたはhttps://stackoverflow.com/questions/25700529/laravel-eloquent-how-to-order-results-of-related-モデル – LorenzoBerti

+0

@LorenzoBerti、ええ、私は何度もそれを読んだことがありますが、私は集計(すなわちCount)で注文できるかどうかはわかりません。私はいくつかのアイデアを試してみるが、まだそれを働かせていないだろう... – JBxOnline

答えて

0

使用withCount()

Vehicle::withCount('views')->latest('views_count')->get() 

あなたが実際にあなたがあなたの結果のモデルに{relation}_count列を配置しますwithCount方法を、使用することができ、それらをロードすることなく関係からの結果の数をカウントしたい場合は

https://laravel.com/docs/5.5/eloquent-relationships#counting-related-models

+0

これは完璧な答えになるだろう...しかし、私はエラーが発生し、laravel-mongodbのバグのように見える:https: //github.com/jenssegers/laravel-mongodb/issues/1147 – JBxOnline

+0

@JBxOnline問題は、パッケージを使ってDBを操作していることです(これは常に悪い考えです)。したがって、Laravelの機能を使用する代わりに、パッケージの作者にこれに対する回避策を尋ねる必要があります。 –

+0

私は、パッケージを使うことは常に悪い考えであるという意見に同意します。 Eloquentは本質的にパッケージです。また、私はjenssegers-mongodbで私の質問にタグを付けて、このパッケージを介してMongoデータベースを使って作業していることを明確にしていることにも注意してください。どちらにかかわらず、withCountはまだ動作するはずです。私はすでにパッケージ作成者に問題を提起しています。あなたの提案が正確に私が後にしている機能を提供するべきであることを見て、私はそれを最高の答えとしてマークしました。私は以前はwithCount()メソッドを知らなかった。 – JBxOnline

関連する問題