count(): 参数必须是数组或对象,实现php 7.2.1中的Countable
count(): Parameter must be an array or an object that implements Countable in php 7.2.1
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;
}
}
您正在使用 find()......->one()
所以你的查询应该return只是一个对象..没有迭代能力。
如果你想检查 find() return 是否是一个值,那么你可以使用 isset 检查。 find()->one() return 如果查询失败则返回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;
}
}
如果你不需要其他 return find()->..one() 的结果,你可以简单地 return
return static::find()->
where(['username' => $username,'userType'=>'ADMIN','user_status'=>self::STATUS_ACTIVE])
->one();
问题是您正在使用 ->one()
检查 count > 1
,这看起来很奇怪,如果没有记录,请查看您想要 return NULL
的代码找到了,如果你查看文档,函数 one()
已经 returns NULL
如果没有找到记录,那么你正在添加额外的代码,它可以很容易地减少到
public static function findAdminByUsername($username)
{
return static::find()->where(
[
'username' => $username,
'userType' => 'ADMIN',
'user_status' => self::STATUS_ACTIVE,
]
)->one();
}
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;
}
}
您正在使用 find()......->one() 所以你的查询应该return只是一个对象..没有迭代能力。
如果你想检查 find() return 是否是一个值,那么你可以使用 isset 检查。 find()->one() return 如果查询失败则返回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;
}
}
如果你不需要其他 return find()->..one() 的结果,你可以简单地 return
return static::find()->
where(['username' => $username,'userType'=>'ADMIN','user_status'=>self::STATUS_ACTIVE])
->one();
问题是您正在使用 ->one()
检查 count > 1
,这看起来很奇怪,如果没有记录,请查看您想要 return NULL
的代码找到了,如果你查看文档,函数 one()
已经 returns NULL
如果没有找到记录,那么你正在添加额外的代码,它可以很容易地减少到
public static function findAdminByUsername($username)
{
return static::find()->where(
[
'username' => $username,
'userType' => 'ADMIN',
'user_status' => self::STATUS_ACTIVE,
]
)->one();
}