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

Comment effectuer une requête floue dans thinkphp

WBOY
Libérer: 2023-05-27 17:10:51
avant
1786 Les gens l'ont consulté

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();
Copier après la connexion

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();
    }
}
Copier après la connexion

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();
    }
}
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal