Maison > cadre php > YII > Comment connecter le framework yii à la base de données

Comment connecter le framework yii à la base de données

(*-*)浩
Libérer: 2019-11-27 13:57:43
original
3269 Les gens l'ont consulté

Comment connecter le framework yii à la base de données

Connexion à la base de données de configuration du framework yii

Avant de commencer, assurez-vous d'avoir installé l'extension PHP PDO et votre Le pilote PDO de la base de données utilisée (par exemple, pdo_mysql de MySQL). Pour l'utilisation de bases de données relationnelles, il s'agit d'une exigence de base. (Apprentissage recommandé : YII framework )

Une fois l'installation du pilote et de l'extension disponible,

ouvrez le paramètre de configuration config/db.php dans la modification correspondant à la configuration de votre base de données. Le fichier contient ce contenu par défaut :

<?php
return [
    &#39;class&#39; => &#39;yii\db\Connection&#39;,
    &#39;dsn&#39; => &#39;mysql:host=localhost;dbname=yii2basic&#39;,
    &#39;username&#39; => &#39;root&#39;,
    &#39;password&#39; => &#39;&#39;,
    &#39;charset&#39; => &#39;utf8&#39;,
];
Copier après la connexion

config/db.php est un outil de configuration typique basé sur un fichier. Ce fichier configure les paramètres de création et d'initialisation de la connexion à la base de données yiidbConnection. La requête SQL appliquée est basée sur cette base de données.

La connexion à la base de données configurée ci-dessus est accessible dans l'application via l'expression Yii::$app->db.

信息: config/db.php 将被包含在应用配置文件 config/web.php 中, 后者指定了整个应用如何初始化。
Copier après la connexion

Créer un enregistrement d'activité

Créer une classe Country qui hérite de la classe d'enregistrement d'activité et la mettre dans le fichier models/Country.php pour représenter et lire le pays données du tableau.

<?php
namespace app\models;
use yii\db\ActiveRecord;
class Country extends ActiveRecord
{
}
Copier après la connexion

Cette classe Country hérite de yiidbActiveRecord. Vous n'avez pas besoin d'y écrire de code. Tout comme maintenant, Yii peut deviner le nom de la table de données correspondante en fonction du nom de la classe.

信息: 如果类名和数据表名不能直接对应, 可以覆写 tableName() 方法去显式指定相关表名。
Copier après la connexion

Vous pouvez facilement manipuler les données de la table country à l'aide de la classe Country, comme ce code :

use app\models\Country;
// 获取 country 表的所有行并以 name 排序
$countries = Country::find()->orderBy(&#39;name&#39;)->all();
// 获取主键为 “US” 的行
$country = Country::findOne(&#39;US&#39;);
// 输出 “United States”
echo $country->name;
// 修改 name 为 “U.S.A.” 并在数据库中保存更改
$country->name = &#39;U.S.A.&#39;;
$country->save();
Copier après la connexion

Information : les enregistrements actifs sont un moyen puissant et orienté objet d'accéder et de manipuler les données de la base de données. Vous pouvez en savoir plus dans le chapitre Journalisation des activités. De plus, vous pouvez également utiliser une autre méthode plus native appelée objet d'accès aux données pour manipuler les données de la base de données.

Créer une action

Afin d'afficher les données du pays aux utilisateurs finaux, vous devez créer une action. Par rapport à l'opération de création dans le contrôleur de site maîtrisée dans la section précédente, il est plus raisonnable de créer ici un nouveau contrôleur pour toutes les données liées au pays. Nommez le nouveau contrôleur CountryController et créez-y une action d'index comme suit :

<?php

namespace app\controllers;

use yii\web\Controller;
use yii\data\Pagination;
use app\models\Country;

class CountryController extends Controller
{
    public function actionIndex()
    {
        $query = Country::find();

        $pagination = new Pagination([
            &#39;defaultPageSize&#39; => 5,
            &#39;totalCount&#39; => $query->count(),
        ]);

        $countries = $query->orderBy(&#39;name&#39;)
            ->offset($pagination->offset)
            ->limit($pagination->limit)
            ->all();

        return $this->render(&#39;index&#39;, [
            &#39;countries&#39; => $countries,
            &#39;pagination&#39; => $pagination,
        ]);
    }
}
Copier après la connexion

Enregistrez le code ci-dessus dans le fichier contrôleurs/CountryController.php. L'opération

index appelle la méthode d'enregistrement actif Country::find() pour générer une instruction de requête et récupérer toutes les données de la table country. Pour limiter le nombre de pays renvoyés par requête, la requête est paginée à l'aide d'objets yiidataPagination. L'objet Pagination a deux missions principales :

Définir des clauses de décalage et de limite pour les instructions de requête SQL afin de garantir que chaque requête ne renvoie qu'une seule page de données (dans cet exemple, chaque page comporte 5 lignes).

Affiche un paginateur composé d'une liste de numéros de page dans la vue, comme expliqué dans un paragraphe ultérieur.

À la fin du code, l'opération d'indexation affiche une vue nommée index et y transmet les données du pays et les informations de pagination.

Créer une vue

Créez d'abord un sous-répertoire nommé country dans le répertoire des vues. Ce répertoire stocke toutes les vues rendues par le contrôleur de pays. Créez un fichier de vue nommé index.php dans le répertoire vues/pays avec le contenu suivant :

<?php
use yii\helpers\Html;
use yii\widgets\LinkPager;
?>
<h1>Countries</h1>
<ul>
<?php foreach ($countries as $country): ?>
    <li>
        <?= Html::encode("{$country->name} ({$country->code})") ?>:
        <?= $country->population ?>
    </li>
<?php endforeach; ?>
</ul>

<?= LinkPager::widget([&#39;pagination&#39; => $pagination]) ?>
Copier après la connexion

Cette vue contient deux parties pour afficher les données du pays. La première partie parcourt les données du pays et les affiche sous la forme d'une liste HTML non ordonnée. La deuxième partie utilise yiiwidgetsLinkPager pour restituer les informations de pagination transmises par l'opération. Le widget LinkPager affiche une liste de boutons de pagination. En cliquant sur n’importe quel bouton, vous accéderez à la page correspondante.

Test

Visitez l'URL suivante dans votre navigateur pour voir si cela fonctionne :

http://hostname/index.php?r=country/index
Copier après la connexion

Comment connecter le framework yii à la base de données

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:
yii
source:php.cn
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