我有一个与第二个模型有“hasMany”关系的模型,它记录了前者的“投票”。然后我有一个方法可以被要求简单地计算投票数,如下所示:
class Car extends Model
{
public function votes()
{
return $this->hasMany(Vote::class);
}
public function score()
{
return $this->votes->count();
}
}
在我的控制器中,我想运行一个返回all()的查询,但是按score()排序...:
$cars = Car::all()->sortBy('score');
但这显然不起作用......我觉得我走在正确的轨道上,但不太知道如何使这项工作。会感激一些帮助。感谢。
答案 0 :(得分:0)
代码应该是这样的:
$products = Shop\Product::join('shop_products_options as po', 'po.product_id', '=', 'products.id')
->orderBy('po.pinned', 'desc')
->select('products.*') // just to avoid fetching anything from joined table
->with('options') // if you need options data anyway
->paginate(5);
答案 1 :(得分:0)
试试这个解决方案:
$cars = Car::with('votes')->get()->sortBy(function($car)
{
return $car->votes->count();
});
希望它对你有所帮助:)。