Laravel 4获得10项关系类型最多的项目

时间:2014-03-18 11:07:35

标签: laravel laravel-4 eloquent

假设我的项目包含Post个,其中有Vote个。{/ p>

如何获得票数最高的10 Post个?

2 个答案:

答案 0 :(得分:2)

你不能在Eloquent的一个不错的查询中做到这一点(AFAIK)。您可以直接使用表名直接使用DB :: select(),也可以按计数加入和排序。

但是,如果您不介意一些开销和PHP处理,您可以执行以下操作:

$posts = Post::with('Vote')->all()->sortBy(function ($item) {
    return $item->votes->count();
}, SORT_REGULAR, true)->take(10);

答案 1 :(得分:0)

您需要在select上使用DB :: raw进行一些手动数据库查询。

$modela = new ModelA;
$modelb = new ModelB;

$tablea = $modela->getTable();
$tableb = $modelb->getTable();

$query = $modela->query();
$query->select(DB::raw("(SELECT COUNT(*) FROM {$tableb} as b where b.a_id = {$tablea}.id) AS b_count"));

未经测试但查询应该是正确的。您需要将WHERE b.a_id更新为相关的字段名称。