具有依赖项计数的 Laravel 查询构建器

Posted

技术标签:

【中文标题】具有依赖项计数的 Laravel 查询构建器【英文标题】:Laravel query builder with count of dependencies 【发布时间】:2018-08-02 20:37:36 【问题描述】:

我在使用 Laravel (Lumen) 构建查询时遇到问题。 这是我的代码:

$user = User::where('name', $name)
        ->with(['pages' => function($query)
            $query->orderBy('created_at', 'desc')
                ->with(['posts'])
                ->orderBy('created_at', 'desc')
                ->take(4);
        ])
        ->first();

我想添加页面和帖子的响应计数,因此我希望响应有两个额外的字段,例如:

...
pages_count: 5,
posts_count: 25
...

我该怎么做?

向查询中添加 ->count() 不起作用。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

你可以像这样使用withCount

User::where('name', $name)
    ->withCount('pages')
    ->with(['pages' => function($query)
        $query->orderBy('created_at', 'desc')
            ->withCount('posts')
            ->with('posts')
            ->orderBy('created_at', 'desc')
            ->take(4);
    ])
    ->first();

【讨论】:

以上是关于具有依赖项计数的 Laravel 查询构建器的主要内容,如果未能解决你的问题,请参考以下文章

laravel 查询构建器计数关系

如何使用 Laravel 的流畅查询构建器选择计数?

Laravel - 查询构建器以选择具有唯一列值的多行(具有另一列的最大值)

向 Laravel 查询构建器添加自定义函数

Laravel:查询构建器

查询构建器上的 laravel orderByRaw()