J'ai ce code pour trouver un utilisateur de la base de données dont le statut est actif et le rôle est l'utilisateur
public static function findByUsername($username)
{
return static::find(['username' => $username, 'status' => static::STATUS_ACTIVE, 'role'=>'user']);
}
J'ai besoin de trouver un utilisateur dont le rôle n'est pas égal à "utilisateur". Comment puis-je faire ceci?
P.S: J'utilise YII2
Je veux proposer une autre solution, c'est plus élégant pour moi. J'utilise généralement cette approche depuis Yii 1 lorsque j'ai besoin de vérifier le fonctionnement différent.
$models = Book::find()->where('id != :id and type != :type', ['id'=>1, 'type'=>1])->all();
Vous pouvez passer une clause where personnalisée comme ceci:
andWhere(['!=', 'field', 'value'])
Votre fonction finale ressemblera à:
public static function findByUsername($username)
{
return static::find()
->where([
'username' => $username,
'status' => static::STATUS_ACTIVE
])
->andWhere(['!=', 'role', 'user'])
->all();
}
Ok, j'ai fait comme ça:
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();
}