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;
}
}
答案 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();
}