排序相关(hasMany)文件数
我有2个系列。 车辆和景观。 我想带回按照视图数排序的车辆列表。排序相关(hasMany)文件数
我的汽车类
class Vehicle extends Moloquent {
protected $dates = ['date_assigned'];
public function associated_views()
{
return $this->hasMany('App\Collections\View');
}
}
我的视图类
class View extends Moloquent {
public function associated_vehicle()
{
return $this->belongsTo('App\Collections\Vehicle');
}
}
我能得到的事后的意见计数,用$媒介物> associated_views->计数(),但这不能让我在将每一条记录拉回前在场上进行排序。这可能吗?
使用withCount()
:
Vehicle::withCount('views')->latest('views_count')->get()
如果你要计算从一个关系结果的数量,而无需实际加载它们,你可以使用
withCount
方法,这将放置{relation}_count
列上你的最终模型
https://laravel.com/docs/5.5/eloquent-relationships#counting-related-models
这_should_是完美的答案...但是,我得到一个错误,它看起来像它是laravel-mongodb中的错误:https: //github.com/jenssegers/laravel-mongodb/issues/1147 – JBxOnline
@JBxOnline问题是你正在使用数据库通过一个包(这总是一个坏主意)。因此,不需要使用Laravel功能,您需要询问软件包作者有关此方法的解决方法。 –
我不同意使用软件包总是一个坏主意。雄辩本质上是一个包装。你还应该注意到,我用jenssegers-mongodb标记了我的问题,以明确我正在通过这个包使用Mongo数据库。无论如何,withCount仍然可以工作,并且我已经向软件包作者提出了这个问题。看到你的建议应该提供我所追求的功能,我已经把它标记为最好的答案。我以前并不知道withCount()方法。 – JBxOnline
看看这篇文章可以帮助你! https://stackoverflow.com/questions/18861186/eloquent-eager-load-order-by或https://stackoverflow.com/questions/25700529/laravel-eloquent-how-to-order-results-of-related-模型 – LorenzoBerti
@洛伦佐Berti,是的,我已经阅读了很多次,但我不知道我可以通过聚合(即计数)命令。我会尝试一些更多的想法,但没有得到它的工作呢... – JBxOnline