【问题标题】:count(): Parameter must be an array or an object that implements Countable in php 7.2.1count():参数必须是数组或对象,php 7.2.1中实现了Countable
【发布时间】:2018-07-24 16:16:27
【问题描述】:

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;
   }
}

【问题讨论】:

  • 请澄清您的具体问题或添加其他详细信息以准确突出您的需要。正如目前所写的那样,很难准确地说出你在问什么。
  • count() 在 php 7.2.1 中不支持。
  • 如果我的函数返回对象,我需要将其转换为数组,反之亦然
  • 仍然不清楚你在问什么,添加一些相关代码并描述问题
  • 您检索对象然后尝试计数的代码在哪里,添加与您的问题相关的代码

标签: yii2 php-7.2


【解决方案1】:

问题是您正在使用 ->one() 检查 count > 1,这看起来很奇怪,查看您想要返回的代码 NULL 如果没有找到记录并且如果您查看文档函数 one()如果没有找到记录,则已经返回 NULL,因此您正在添加额外的代码,并且很容易将其简化为

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

【讨论】:

  • 合适的,解释得很好。谢谢!
【解决方案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;
     }
  }

如果你不需要其他人返回 find()->..one() 的结果,你可以简单地返回

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

【讨论】:

  • 永远不要对普通变量使用 isset()。请改用$adminUser !== null。在这一点上,检查在这种情况下完全没用也变得很明显,因为无论如何你最终都会返回相同的值。
  • @NikiC yii2 中的 find()-->one() 在找到一行时返回一个对象,但如果没有找到则返回 null,因此 isset(..) 应该是正确的..跨度>
猜你喜欢
  • 2019-08-03
  • 2018-06-28
  • 1970-01-01
  • 2018-06-08
  • 2018-09-22
  • 1970-01-01
  • 2020-03-02
  • 2019-08-15
  • 2019-05-10
相关资源
最近更新 更多