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

Laravel中如何统计登录用户的帖子数量?

解决Laravel中统计当前登录用户帖子(广告)数量的问题

嘿,我来帮你搞定这个问题!你当前的代码User::WithCount('ads')->get()是在查询所有用户的广告计数,但我们需要的是当前登录用户的,所以只要针对认证用户做调整就可以了,下面给你几种可行的方案:

方法1:直接统计当前用户的关联数量

这是最直接的方式,如果你只需要数量,不需要用户的其他信息,可以直接调用关联的count()方法:

public function limitation() {
    $limit = 3;
    // 确保用户已登录的情况下获取计数
    if (auth()->check()) {
        $adCount = auth()->user()->ads()->count();
    } else {
        $adCount = 0; // 处理未登录用户的情况
    }
    
    // 后续可以用$adCount和$limit做判断,比如:
    if ($adCount >= $limit) {
        // 达到限制的逻辑
    }
}

方法2:预加载关联计数(适合需要用户其他信息的场景)

如果你后续还需要用到当前用户的其他属性,可以用loadCount()预加载广告计数,这样会在用户模型上添加一个ads_count属性:

public function limitation() {
    $limit = 3;
    $adCount = 0;
    
    if (auth()->check()) {
        $user = auth()->user()->loadCount('ads');
        $adCount = $user->ads_count;
        // 这里还可以使用$user的其他属性,比如$user->name等
    }
    
    // 你的业务逻辑
}

关键前提:确保模型关联正确

要让上面的代码生效,你的User模型中必须定义好和Ad模型的关联关系,比如:

// app/Models/User.php
namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    // ... 其他代码
    
    // 假设你的广告模型是Ad,关联外键是user_id
    public function ads()
    {
        return $this->hasMany(Ad::class);
    }
}

这样调整后,就能准确获取当前登录用户的广告数量啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:11:41