0

我想检查是否创建了具有指定 ID 的用户,如果没有,我将创建一个新用户并返回它。如果用户已经存在,我将返回它。当我这样做时,服务器无法加载。我有 2 个功能:

public function actionCreateNewUser() {
    $aID = "4324";
    $rs = $this->canCreateNewUser($aID);
}
public function canCreateNewUser($aID) {
    $rsUser = User::model()->find('AID=:aID', array('aID' => $aID));
    return $rsUser[0];
}
4

2 回答 2

4

canCreateNewUser实现是错误的,因为find返回User模型或null. 它应该这样写:

public function canCreateNewUser($aID) {
    return User::model()->find('AID=:aID', array('aID' => $aID)) === null;
}

您还可以使用返回现有实例或当场创建新实例User的方法进行扩展:findOrCreate

public function findOrCreate($aID) {
    $existing = User::model()->find('AID=:aID', array('aID' => $aID));
    if (!$existing) {
        User::model()->insert(array('aID' => $aID));
    }

    return $existing ?: User::model()->find('AID=:aID', array('aID' => $aID));
}
于 2012-05-15T09:49:45.773 回答
0

您可以这样做以避免为非对象返回无效索引

$result = User::model()->find('AID=:aID', array('aID' => $aID));

return ($result)?$result[0]:NULL;
于 2012-05-15T09:52:20.260 回答