Maison cadre php YII Requête de données dans le framework Yii : accédez efficacement aux données

Requête de données dans le framework Yii : accédez efficacement aux données

Jun 21, 2023 am 11:22 AM
yii 高效 数据查询

Le framework Yii est un framework d'application Web PHP open source qui fournit de nombreux outils et composants pour simplifier le processus de développement d'applications Web, dont la requête de données est l'un des composants importants. Dans le framework Yii, nous pouvons utiliser une syntaxe de type SQL pour accéder à la base de données afin d'interroger et de manipuler les données efficacement.

Le générateur de requêtes du framework Yii comprend principalement les types suivants : requête Active Record, requête Query Builder, requête de commande et requête SQL originale. Cet article présentera ces générateurs de requêtes et comment les utiliser un par un pour aider les débutants à mieux maîtriser l'utilisation des requêtes de données dans le framework Yii.

  1. Requête Active Record

Le mode Active Record est l'un des modes d'accès aux données les plus couramment utilisés dans le framework Yii. Il fournit une interface orientée objet qui nous permet d'exploiter les données dans la base de données tout comme les instances orientées objet. . Dans le framework Yii, chaque classe Active Record correspond à une table de base de données, et on peut accéder aux données de la table en appelant la méthode statique de la classe.

Ce qui suit est un exemple de requête Active Record :

//创建一个Active Record对象
$post = Post::findOne(1);

//输出该对象的属性
echo $post->title;
Copier après la connexion

Dans cet exemple, nous utilisons d'abord la méthode findOne() pour créer une instance de la classe Post . Cette méthode interrogera l'enregistrement avec la clé primaire 1 dans la table Post de la base de données et renverra un objet Active Record ; nous utiliserons ensuite l'attribut title de l'objet pour. accéder à l'attribut titre de l'enregistrement. findOne()方法创建了一个Post类的实例,这个方法会查询数据库中Post表中主键为1的记录并返回一个Active Record对象;然后我们使用该对象的title属性来访问该记录的标题属性。

在实际开发中,我们通常需要对数据进行过滤、排序、分页等操作。Yii框架提供了丰富的方法来实现这些功能。例如,我们可以使用where()方法来添加过滤条件,使用orderBy()方法来指定排序方式,使用limit()方法来限制返回的记录数,使用offset()方法来指定返回记录的起始位置。以下是一个例子:

//查询标题包含“Yii”并且作者为“admin”的文章,并按照发布时间倒序排序,返回前10条记录
$posts = Post::find()->where(['like', 'title', 'Yii'])
                      ->andWhere(['author' => 'admin'])
                      ->orderBy(['created_at' => SORT_DESC])
                      ->limit(10)
                      ->offset(0)
                      ->all();
Copier après la connexion

这个例子中,我们使用了find()方法创建了一个Active Record查询对象,然后使用where()andWhere()方法添加了两个过滤条件,分别是标题包含“Yii”和作者为“admin”;使用orderBy()方法指定了按照发布时间倒序排序;使用limit()方法限制了返回的记录数为10条;使用offset()方法指定返回记录的起始位置为0条记录。最后,我们使用all()方法执行查询,并返回所有符合要求的记录。

  1. Query Builder查询

Query Builder是Yii框架中另一个常用的数据访问方式,它提供了一种链式调用的方式来构建SQL查询语句,比较适合于复杂的查询需求。在Yii框架中,我们可以使用Yii::$app->db->createCommand()方法创建一个Query Builder对象,然后使用该对象的一系列方法来构建查询语句。

以下是一个Query Builder查询的例子:

//创建一个查询构建器对象,并构建查询语句
$query = Yii::$app->db->createCommand()
        ->select('id, title, content')
        ->from('post')
        ->where(['like', 'title', 'Yii'])
        ->andWhere(['author' => 'admin'])
        ->orderBy(['created_at' => SORT_DESC])
        ->limit(10)
        ->offset(0);

//执行查询,并返回结果集
$posts = $query->queryAll();
Copier après la connexion

这个例子中,我们首先使用Yii::$app->db->createCommand()方法创建了一个Query Builder对象,然后使用该对象的select()from()where()andWhere()orderBy()limit()offset()等方法来构建查询语句。最后,我们使用queryAll()方法执行查询,并返回所有符合要求的记录。

Query Builder与Active Record最大的区别在于,Query Builder不需要定义模型类,因此适用于一些简单的查询场景,如统计类查询。

  1. 命令查询

命令查询是Yii框架中最原始的数据访问方式,我们可以使用该方式来执行一些不需要返回结果集的数据库操作,如更新、删除、插入等。在Yii框架中,我们可以使用Yii::$app->db->createCommand()方法创建一个Command对象,然后使用该对象的execute()方法来执行SQL语句。

以下是一个命令查询的例子:

//创建一个命令对象,并执行SQL语句
Yii::$app->db->createCommand()
        ->update('post', ['status' => 1], 'author = "admin"')
        ->execute();
Copier après la connexion

这个例子中,我们首先使用Yii::$app->db->createCommand()方法创建了一个Command对象,然后使用该对象的update()方法构建了一条更新语句,该语句将post表中所有author为“admin”的记录的状态属性更新为1;最后,我们使用execute()方法执行该更新语句。

  1. 原始SQL查询

在一些特殊情况下,我们可能需要执行一些复杂的查询语句,无法通过Active Record、Query Builder或命令查询来处理,这时可以使用原始SQL查询。在Yii框架中,我们可以使用Yii::$app->db->createCommand()方法创建一个Command对象,然后使用该对象的setSql()方法来指定原始的SQL语句,并使用queryAll()

Dans le développement réel, nous devons généralement filtrer, trier, paginer et autres opérations sur les données. Le framework Yii fournit des méthodes riches pour implémenter ces fonctions. Par exemple, nous pouvons utiliser la méthode where() pour ajouter des conditions de filtre, la méthode orderBy() pour spécifier la méthode de tri et la méthode limit()< Méthode /code> Pour limiter le nombre d'enregistrements renvoyés, utilisez la méthode <code>offset() pour spécifier la position de départ des enregistrements renvoyés. Voici un exemple :

//创建一个命令对象,并执行原始SQL查询
$connection = Yii::$app->db;
$command = $connection->createCommand("
    SELECT p.id, p.title, u.username
    FROM post p LEFT JOIN user u ON p.author_id = u.id
    WHERE p.status = 1 AND u.role = 'admin'
    ORDER BY p.created_at DESC
    LIMIT 10 OFFSET 0
");
$posts = $command->queryAll();
Copier après la connexion
Copier après la connexion

Dans cet exemple, nous utilisons la méthode find() pour créer un objet de requête Active Record, puis utilisons where() et < code> La méthode andWhere() ajoute deux conditions de filtre, à savoir que le titre contient "Yii" et que l'auteur est "admin" ; la méthode orderBy() est utilisée pour spécifier le tri dans ordre inverse du temps de publication ; utilisez la méthode limit() limite le nombre d'enregistrements renvoyés à 10 ; utilisez la méthode offset() pour spécifier la position de départ de l'enregistrement renvoyé ; enregistrements est 0 enregistrement. Enfin, nous utilisons la méthode all() pour exécuter la requête et renvoyer tous les enregistrements qui répondent aux exigences. 🎜
    🎜Query Builder query🎜🎜🎜Query Builder est une autre méthode d'accès aux données couramment utilisée dans le framework Yii. Elle fournit une méthode d'appel en chaîne pour créer des instructions de requête SQL, qui est plus adaptée aux exigences de requêtes complexes. . Dans le framework Yii, nous pouvons utiliser la méthode Yii::$app->db->createCommand() pour créer un objet Query Builder, puis utiliser une série de méthodes de l'objet pour construire des instructions de requête. 🎜🎜Ce qui suit est un exemple de requête Query Builder : 🎜rrreee🎜Dans cet exemple, nous créons d'abord un objet Query Builder à l'aide de Yii::$app->db->createCommand() méthode , puis utilisez les select(), from(), where(), andWhere()</code de l'objet >, des méthodes telles que <code>orderBy(), limit() et offset() sont utilisées pour construire des instructions de requête. Enfin, nous utilisons la méthode queryAll() pour exécuter la requête et renvoyer tous les enregistrements qui répondent aux exigences. 🎜🎜La plus grande différence entre Query Builder et Active Record est que Query Builder n'a pas besoin de définir des classes de modèle, il convient donc à certains scénarios de requêtes simples, tels que les requêtes statistiques. 🎜
      🎜Requête de commande🎜🎜🎜La requête de commande est la méthode d'accès aux données la plus originale du framework Yii. Nous pouvons utiliser cette méthode pour effectuer certaines opérations de base de données qui n'ont pas besoin de renvoyer un ensemble de résultats, telles que. mettre à jour, supprimer, insérer, etc. Dans le framework Yii, nous pouvons utiliser la méthode Yii::$app->db->createCommand() pour créer un objet Command, puis utiliser le execute()< de l'objet. /code >Méthode pour exécuter des instructions SQL. 🎜🎜Ce qui suit est un exemple de requête de commande : 🎜rrreee🎜Dans cet exemple, nous créons d'abord un objet Command en utilisant la méthode Yii::$app->db->createCommand() , puis Une instruction update est construite à l'aide de la méthode update() de l'objet, qui met à jour tous les enregistrements de la table post dont author est "admin " L'attribut status est mis à jour à 1 ; enfin, nous utilisons la méthode execute() pour exécuter l'instruction update. 🎜
        🎜Requête SQL originale🎜🎜🎜Dans certains cas particuliers, nous pouvons avoir besoin d'exécuter des instructions de requête complexes qui ne peuvent pas être traitées via Active Record, Query Builder ou une requête de commande. Dans ce cas, vous pouvez. utilisez la requête SQL originale. Dans le framework Yii, nous pouvons utiliser la méthode Yii::$app->db->createCommand() pour créer un objet Command, puis utiliser le setSql()< de l'objet. /code > pour spécifier l'instruction SQL d'origine et exécuter la requête à l'aide de la méthode <code>queryAll(). 🎜🎜Ce qui suit est un exemple de requête SQL brute : 🎜
        //创建一个命令对象,并执行原始SQL查询
        $connection = Yii::$app->db;
        $command = $connection->createCommand("
            SELECT p.id, p.title, u.username
            FROM post p LEFT JOIN user u ON p.author_id = u.id
            WHERE p.status = 1 AND u.role = 'admin'
            ORDER BY p.created_at DESC
            LIMIT 10 OFFSET 0
        ");
        $posts = $command->queryAll();
        Copier après la connexion
        Copier après la connexion

        这个例子中,我们首先创建了一个Command对象,并使用setSql()方法指定一条原始的SQL查询语句。该语句将post表和user表进行左连接,查询出所有状态为1且用户角色为“admin”的文章,并按照发布时间倒序排序,返回前10条记录。最后,我们使用queryAll()方法执行该查询,并返回所有符合要求的记录。

        总结:

        在Yii框架中,我们可以使用多种方式来访问数据库中的数据,包括Active Record查询、Query Builder查询、命令查询和原始SQL查询。不同的查询构建器适用于不同的查询场景,我们需要根据实际需求来选择最合适的查询方式。通过本文的介绍,相信读者已经对Yii框架中的数据查询有了更深入的了解,希望对大家在实际开发中使用Yii框架有所帮助。

        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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Caractéristiques et avantages du langage C : Pourquoi est-il l'un des langages de programmation les plus populaires ? Caractéristiques et avantages du langage C : Pourquoi est-il l'un des langages de programmation les plus populaires ? Feb 23, 2024 am 08:39 AM

Caractéristiques et avantages du langage C : Pourquoi est-il l'un des langages de programmation les plus populaires ? En tant que langage de programmation généraliste de haut niveau, le langage C présente de nombreuses fonctionnalités et avantages uniques, c'est pourquoi il est devenu l'un des langages de programmation les plus populaires. Cet article explorera les caractéristiques et les avantages du langage C, ainsi que sa large application dans divers domaines. Tout d’abord, le langage C a une syntaxe concise et une structure claire. Comparée à d’autres langages de programmation, la syntaxe du langage C est relativement simple et facile à comprendre et à apprendre. Il utilise les caractéristiques du langage naturel pour permettre aux programmeurs de

L'espace disque C s'épuise ! 5 méthodes de nettoyage efficaces dévoilées ! L'espace disque C s'épuise ! 5 méthodes de nettoyage efficaces dévoilées ! Mar 26, 2024 am 08:51 AM

L’espace disque C s’épuise ! 5 méthodes de nettoyage efficaces dévoilées ! Lors de l'utilisation d'ordinateurs, de nombreux utilisateurs seront confrontés à une situation dans laquelle l'espace du lecteur C s'épuise. Surtout après le stockage ou l'installation d'un grand nombre de fichiers, l'espace disponible sur le lecteur C diminuera rapidement, affectant ainsi les performances de l'ordinateur. vitesse de course. À ce stade, il est absolument nécessaire de nettoyer le lecteur C. Alors, comment nettoyer efficacement le lecteur C ? Ensuite, cet article révélera 5 méthodes de nettoyage efficaces pour vous aider à résoudre facilement le problème du manque d'espace sur le disque C. 1. Nettoyer les fichiers temporaires Les fichiers temporaires sont des fichiers temporaires générés lorsque l'ordinateur est en cours d'exécution.

Comparaison du coût d'apprentissage de Python et du C++ : lequel vaut le plus l'investissement ? Comparaison du coût d'apprentissage de Python et du C++ : lequel vaut le plus l'investissement ? Mar 25, 2024 pm 10:24 PM

Python et C++ sont deux langages de programmation populaires, chacun ayant ses propres avantages et inconvénients. Pour les personnes qui souhaitent apprendre la programmation, choisir d’apprendre Python ou C++ est souvent une décision importante. Cet article explorera les coûts d'apprentissage de Python et C++ et discutera du langage qui mérite le plus de temps et d'efforts. Commençons par Python. Python est un langage de programmation interprété de haut niveau connu pour sa facilité d'apprentissage, son code clair et sa syntaxe concise. Par rapport au C++, Python

Guide pour une conversion efficace des pratiques de codage Golang Guide pour une conversion efficace des pratiques de codage Golang Feb 20, 2024 am 11:09 AM

Titre : Guide pratique efficace pour la conversion de l'encodage de langue Go Dans le développement quotidien de logiciels, nous rencontrons souvent le besoin de convertir du texte dans différents encodages. En tant que langage de programmation efficace et moderne, le langage Go fournit une riche bibliothèque standard et des fonctions intégrées, ce qui rend très simple et efficace la mise en œuvre de la conversion d'encodage de texte. Cet article présentera des directives pratiques sur la manière d'effectuer une conversion d'encodage dans le langage Go et fournira des exemples de code spécifiques. 1.Encodage UTF-8 et conversion de chaînes Dans le langage Go, les chaînes utilisent l'encodage UTF-8 par défaut

Compréhension approfondie des fonctions et caractéristiques du langage Go Compréhension approfondie des fonctions et caractéristiques du langage Go Mar 21, 2024 pm 05:42 PM

Fonctions et caractéristiques du langage Go Le langage Go, également connu sous le nom de Golang, est un langage de programmation open source développé par Google. Il a été initialement conçu pour améliorer l'efficacité et la maintenabilité de la programmation. Depuis sa naissance, le langage Go a montré son charme unique dans le domaine de la programmation et a reçu une large attention et reconnaissance. Cet article approfondira les fonctions et caractéristiques du langage Go et démontrera sa puissance à travers des exemples de code spécifiques. Prise en charge native de la concurrence Le langage Go prend automatiquement en charge la programmation simultanée, qui est implémentée via les mécanismes goroutine et canal.

Interprétation des nouvelles fonctionnalités du langage Go : rendre la programmation plus efficace Interprétation des nouvelles fonctionnalités du langage Go : rendre la programmation plus efficace Mar 10, 2024 pm 12:27 PM

[Interprétation des nouvelles fonctionnalités du langage Go : pour rendre la programmation plus efficace, des exemples de code spécifiques sont nécessaires] Ces dernières années, le langage Go a attiré beaucoup d'attention dans le domaine du développement logiciel, et son concept de conception simple et efficace a attiré de plus en plus développeurs. En tant que langage de programmation typé statiquement, le langage Go continue d'introduire de nouvelles fonctionnalités pour améliorer l'efficacité du développement et simplifier le processus d'écriture de code. Cet article fournira une explication détaillée des dernières fonctionnalités du langage Go et expliquera comment profiter de la commodité apportée par ces nouvelles fonctionnalités à travers des exemples de code spécifiques. Développement modulaire (GoModules) Go langage à partir de 1

Deep mining : utiliser le langage Go pour créer des robots d'exploration efficaces Deep mining : utiliser le langage Go pour créer des robots d'exploration efficaces Jan 30, 2024 am 09:17 AM

Exploration approfondie : Utilisation du langage Go pour un développement efficace de robots Introduction : Avec le développement rapide d'Internet, obtenir des informations est devenu de plus en plus pratique. En tant qu'outil permettant d'obtenir automatiquement des données de sites Web, les robots d'exploration ont attiré une attention et une attention croissantes. Parmi les nombreux langages de programmation, le langage Go est devenu le langage de développement de robots préféré de nombreux développeurs en raison de ses avantages tels qu'une concurrence élevée et des performances puissantes. Cet article explorera l'utilisation du langage Go pour un développement efficace de robots et fournira des exemples de code spécifiques. 1. Avantages du développement de robots d'exploration du langage Go : Concurrence élevée : langage Go

Avantages du langage Go dans les applications d'entreprise Avantages du langage Go dans les applications d'entreprise Mar 01, 2024 pm 09:09 PM

L'une des raisons pour lesquelles l'utilisation du langage Go pour le développement d'applications au niveau de l'entreprise suscite de plus en plus d'attention est ses excellentes performances et ses fonctionnalités de concurrence. Cet article explorera les avantages du langage Go dans le développement d'applications au niveau de l'entreprise et donnera des exemples de code spécifiques pour illustrer ces avantages. 1. Capacités de programmation simultanée Le langage Go permet une programmation simultanée efficace grâce au mécanisme goroutine, ce qui lui confère des avantages évidents dans la gestion des tâches simultanées. Grâce à goroutine, nous pouvons facilement créer des tâches simultanées et les exécuter via des canaux

See all articles