有时候只想查询一个数据是否存在,发现 Yii2 只能这样写:User::find()->where([])->count()
。有点长不喜欢,为什么
有 findOne
和 findAll
但是却没有 findCount
呢?自己实现一个吧。
为了解耦方便,我们单独写一个 FindCountTrait
特性,新建一个文件 common\behaviors\FindCountTrait.php
(路径你随便改)
代码如下:
<?php
/**
* author : forecho <caizhenghai@gmail.com>
* createTime : 2016/3/24 17:47
* description:
*/
namespace common\behaviors;
trait FindCountTrait
{
// 返回数量
public static function findCount($condition, $q = '*')
{
return static::findByCondition($condition)->count($q);
}
}
如果你想在 Topic
model 使用,方法很简单,使用 use
就可以了,示例如下:
<?php
namespace common\models;
use common\behaviors\FindCountTrait;
use Yii;
class Topic extends \yii\db\ActiveRecord
{
use FindCountTrait;
// .....
}
然后你就可以直接用了:
Topic::findCount([]);
如果这篇文章对您有帮助,不妨微信小额赞助我一下,让我有动力继续写出高质量的教程。