count():参数必须是在PHP 7.2.1中实现Countable的数组或对象

时间:2018-02-14 06:54:05

标签: yii2 php-7.2

count():参数必须是在 php 7.2.1中实现Countable的数组或对象 使用 Yii2

如何解决此问题?

 public static function findAdminByUsername($username)
{
    $adminUser = static::find()->where(['username' => $username,'userType'=>'ADMIN','user_status'=>self::STATUS_ACTIVE])->one();
    if(count($adminUser)>0){
        return $adminUser;
    }else{
        return null;
   }
}

2 个答案:

答案 0 :(得分:2)

您正在使用find()......-> one() 所以你的查询应该只返回一个对象..没有迭代功能。

如果要检查find()是否返回值,则可以使用isset进行检查。 find() - >如果查询失败,则one()返回null。

  public static function findAdminByUsername($username)
  {
      $adminUser = static::find()->where(['username' => $username,'userType'=>'ADMIN','user_status'=>self::STATUS_ACTIVE])->one();
      if( $adminUser !== null ){
          return $adminUser;
      }else{
          return null;
     }
  }

如果您不需要其他人返回结果查找() - > .. one(),您只需返回

return static::find()->
  where(['username' => $username,'userType'=>'ADMIN','user_status'=>self::STATUS_ACTIVE])
     ->one();

答案 1 :(得分:1)

问题是你正在检查count > 1使用看起来很奇怪的->one(),看看你想要返回的代码NULL如果没有找到记录并且你看了文档函数one()已经返回NULL如果没有找到记录,那么你要添加额外的代码,它可以很容易地减少到一行

 public static function findAdminByUsername($username)
{
    return static::find()->where(['username' => $username,'userType'=>'ADMIN','user_status'=>self::STATUS_ACTIVE])->one();
}