
下面我将介绍几种在Yii框架中统计不同类型邮箱数量的方法,包括数据库查询和PHP处理两种方式。
方法一:使用SQL查询直接统计
1. 模型方法实现
// models/User.phpnamespace app\models;use yii\db\ActiveRecord;class User extends ActiveRecord{
// 获取不同类型邮箱的统计
public static function getEmailTypeStats()
{
return static::find()
->select([
'email_type' => 'SUBSTRING_INDEX(email, "@", -1)',
'count' => 'COUNT(*)'
])
->groupBy('email_type')
->orderBy(['count' => SORT_DESC])
->asArray()
->all();
}
// 或者更精确的邮箱域名提取
public static function getEmailDomainStats()
{
return static::find()
->select([
'domain' => 'SUBSTRING(email, LOCATE("@", email) + 1)',
'count' => 'COUNT(*)'
])
->where(['IS NOT', 'email', null])
->andWhere(['<>', 'email', ''])
->groupBy('domain')
->orderBy(['count' => SORT_DESC])
->asArray()
->all();
}}2. 控制器调用
// controllers/UserController.phppublic function actionEmailStats(){
$stats = User::getEmailTypeStats();
return $this->render('email-stats', [
'stats' => $stats
]);}希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, LeCMS, ClassCMS, Fastadmin, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。


