php - Laravel 多个 withCount 在同一个关系上

标签 php laravel laravel-5 relationship laravel-5.3

我需要计算来自相同关系的两个不同条件的结果,但它以相同的名称返回。

Model::where('types_id', $specialism_id)
        ->withCount(['requests' => function ($query) {
            $query->where('type', 1);
        }])
        ->withCount(['requests' => function ($query) {
            $query->where('type', 2);
        }])

我可以使用 $model->requests_count 访问 withCount,但是因为它正在查询相同的关系,所以它似乎覆盖了它:

select count(*) 
    from `requests` where `requests`.`id` = `model`.`id` 
    and `type` = '1') as `requests_count`, 
(select count(*) from `requests` where `requests`.`id` = `model`.`id` 
    and `type` = '2') as `requests_count`

如何为多个 withCount 指定名称?

最佳答案

现在你可以这样做了

Model::where('types_id', $specialism_id)
    ->withCount(['requests as requests_1' => function ($query) {
        $query->where('type', 1);
    }, 'requests as requests_2' => function ($query) {
        $query->where('type', 2);
    }])

关于php - Laravel 多个 withCount 在同一个关系上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41985587/

相关文章:

php - Laravel - 带有未签名主键的表迁移错误

php - Multi-Tenancy 和多域 Laravel-5

PHP 未检测文件输入值

PHP 类型转换

php - 动态 Laravel 社会名流配置

php - Laravel Eloquent 分配给模型属性

laravel - 使用 Docker 容器连接到 Laravel 中的 Postgres

javascript - 如何将此加密函数从 PHP 转换为 Javascript

PHPExcel - 将奇怪的字符保存到数据库

php - 如何在 Laravel 中使用 eager 打印省份名称?