You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel Eloquent的loadCount()中为同一关联计数设置别名

解决Laravel中loadCount同时统计多状态关联计数的方案

方案一:使用as为计数指定别名(推荐)

直接在loadCount的数组键中,通过关联名 as 别名的形式,为不同条件的计数设置独立别名,即可同时加载多个状态的计数:

$post->loadCount([
    // 统计已审核评论数,别名为approved_comments_count
    'comments as approved_comments_count' => fn($query) => $query->where('approved', true),
    // 统计未审核评论数,别名为unapproved_comments_count
    'comments as unapproved_comments_count' => fn($query) => $query->where('approved', false),
    // 其他需要加载的关联计数
    'something',
    'else'
]);

之后直接通过模型属性访问统计结果:

// 获取已审核评论数
$approvedCount = $post->approved_comments_count;
// 获取未审核评论数
$unapprovedCount = $post->unapproved_comments_count;

方案二:在模型中定义专属关联

如果这类多状态统计逻辑需要多次复用,可以在Post模型中定义两个针对不同状态的关联:

// Post.php 模型文件
public function approvedComments()
{
    return $this->hasMany(Comment::class)->where('approved', true);
}

public function unapprovedComments()
{
    return $this->hasMany(Comment::class)->where('approved', false);
}

之后直接加载这两个关联的计数即可:

$post->loadCount([
    'approvedComments',
    'unapprovedComments',
    'something',
    'else'
]);

访问结果时使用关联名对应的计数属性:

$approvedCount = $post->approved_comments_count;
$unapprovedCount = $post->unapproved_comments_count;

内容的提问来源于stack exchange,提问作者norr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:02:37