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

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

(*-*)浩
(*-*)浩original
2019-11-27 13:57:433205parcourir

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;,
];

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 中, 后者指定了整个应用如何初始化。

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

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() 方法去显式指定相关表名。

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();

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,
        ]);
    }
}

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]) ?>

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

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!

Déclaration:
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