Подтвердить что ты не робот

Yii2 активная запись поиска не равна

У меня есть этот код, чтобы найти пользователя из db, статус которого активен, а роль - пользователь

public static function findByUsername($username)
{
 return static::find(['username' => $username, 'status' => static::STATUS_ACTIVE, 'role'=>'user']);
}

Мне нужно найти пользователя, что роль не равна "пользователю". Как я могу это сделать?

P.S: Я использую YII2

4b9b3361

Ответ 1

Я хочу предложить другое решение, это более элегантно для меня. Обычно я использую этот подход с Yii 1, когда мне нужно проверить не равную операцию.

$models = Book::find()->where('id != :id and type != :type', ['id'=>1, 'type'=>1])->all();

Ответ 2

Вы можете передать пользовательское предложение where следующим образом:

andWhere(['!=', 'field', 'value'])

Ваша последняя функция будет выглядеть так:

public static function findByUsername($username)
{
    return static::find()
        ->where([
            'username' => $username,
            'status' => static::STATUS_ACTIVE
        ])
        ->andWhere(['!=', 'role', 'user'])
        ->all();
}

Ответ 3

Хорошо, я сделал так:

public static function findByUsername($username)
{
    $sql="select * from tbl_user where username=:uname and status=:st and role != 'user'";
    return static::findBySql($sql,[":uname"=>$username,":st"=>static::STATUS_ACTIVE])->one();
}

Ответ 4

вы можете попробовать это. просто пример

 $existEmail = Users::model()->findByAttributes(
        array('email'=>$this->email),
        array(
            'condition'=>'user_id!=:id',
        'params'=>array('id'=>$this->user_id),
        ));

Ответ 5

Вы можете попробовать:

public static function findByUsername($username)
{
 $criteria = new CDbCriteria;  
 $criteria->addCondition("username != 'username'");
 $criteria->addCondition("role != 'user'");
 $result = User::model()->find($criteria);
 return $result;
}

Или:

public static function findByUsername($username)
{
  $result=Users::model()->findByAttributes(array('condition'=>"role != 'user',username = '$username'"));
}