where('name','like&#"/> where('name','like&#">

Maison  >  Article  >  cadre php  >  Comment effectuer une requête floue dans thinkphp

Comment effectuer une requête floue dans thinkphp

WBOY
WBOYavant
2023-05-27 17:10:511700parcourir

Tout d'abord, dans ThinkPHP, nous pouvons faire fonctionner la base de données via la classe Db. Nous pouvons utiliser la méthode table de la classe Db pour spécifier quelle table de données utiliser, puis appeler la méthode de requête correspondante à utiliser. Lors de l’exécution de requêtes floues, nous pouvons utiliser la méthode similaire. Le nom du champ qui nécessite une correspondance floue est utilisé comme premier paramètre de cette méthode et la chaîne qui doit faire l'objet d'une correspondance est utilisée comme deuxième paramètre. Par exemple, si nous voulons interroger tous les utilisateurs dont les noms contiennent « Zhang », nous pouvons écrire le code comme ceci :

Db::table('user')->where('name', 'like', '%张%')->select();

Dans cette instruction, le premier paramètre de la méthode Where est la condition à interroger, où 'nom' est un champ dans le nom de la table de données, le deuxième paramètre « like » indique que nous voulons effectuer une correspondance floue et le troisième paramètre « %张% » est la chaîne qui doit faire l'objet d'une correspondance. En utilisant le caractère générique %, vous pouvez faire correspondre une chaîne contenant n'importe quel nombre de caractères, afin de pouvoir trouver tous les utilisateurs dont le nom d'utilisateur contient "张".

En plus d'utiliser les méthodes de requête fournies par la classe Db, ThinkPHP fournit également des méthodes de requête plus avancées, telles que la requête de modèle et la requête associée, etc. La définition de classes de modèle simplifie les requêtes car les requêtes de modèle sont implémentées à l'aide de classes de modèle définies. Par exemple, nous pouvons définir une méthode searchByName dans le modèle User pour interroger tous les utilisateurs dont les noms contiennent la chaîne spécifiée :

class User extends Model
{
    public function searchByName($keyword)
    {
        return $this->where('name', 'like', '%' . $keyword . '%')->select();
    }
}

Dans cette méthode, $this représente l'objet du modèle User actuel, et la méthode Where est la même que décrit ci-dessus, remplacez simplement la classe Db par $this. Nous pouvons encapsuler cette méthode de requête afin qu'elle puisse être réutilisée n'importe où dans l'application

class User extends Model
{
    public static function searchByName($keyword)
    {
        return self::where('name', 'like', '%' . $keyword . '%')->select();
    }
}

Ici, nous changeons la méthode searchByName en une méthode statique et remplaçons $this par self, afin que l'utilisateur puisse être appelé directement n'importe où :: méthode searchByName() est utilisé pour interroger.

La requête associative est une méthode d'interrogation en connectant plusieurs tables de données associées à l'aide de l'instruction JOIN. Les requêtes pertinentes dans ThinkPHP sont implémentées en définissant des associations de modèles.La méthode d'implémentation spécifique dépasse le cadre de cet article.Cependant, il convient de noter que lors de l'exécution de requêtes floues, l'instruction JOIN réduira l'efficacité de la requête. envisagez d'abord d'effectuer des requêtes floues, puis d'effectuer des requêtes associées, ou d'utiliser la mise en cache et d'autres méthodes pour améliorer la vitesse des requêtes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer