Comment se connecter à la base de données dans yii
Comment connecter yii à la base de données ?
Compréhension approfondie de la base de données de connexion Yii2.0
Yii utilise PDO (PHP Date Object) pour se connecter à diverses bases de données, donc presque toutes les bases de données grand public Yii peut fournir un bon support pour n'importe quelle base de données. C’est également la large applicabilité que devrait avoir un cadre mature.
Apprentissage recommandé : framework yii
Avant d'effectuer toute opération sur la base de données, vous devez d'abord établir une connexion avec le serveur de base de données. Dans l'application Yii, il existe un composant principal dédié à la gestion des connexions à la base de données. Nous pouvons facilement le trouver dans le fichier de configuration :
'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=yii2advanced', 'username' => 'root', 'password' => '', 'charset' => 'utf8', ], // ... ... ], // ... ...
Quelqu'un a dû deviner ici que Yii utilise yiidbConnection pour la représenter. Cette connexion implémente une simple encapsulation de PDO, masque les différences entre les différentes bases de données et implémente une interface de développement unifiée. De cette façon, vous pouvez ignorer la plupart des problèmes de compatibilité des bases de données pendant le processus de programmation et vous concentrer davantage sur le développement fonctionnel. Par exemple, vous n'avez plus à vous soucier de ne pas pouvoir utiliser les champs de type Money sous MySQL, etc.
Schéma de base de données
Quand il s'agit de rendre Connection indépendante de diverses bases de données, nous devons mentionner le schéma de base de données. Yii fournit divers schémas de base de données grand public, et vous pouvez même écrire votre propre schéma en fonction de votre propre système de gestion de base de données (SGBD). Il existe plusieurs classes liées au Schema :
classe abstraite yiidbSchema, utilisée pour décrire le schéma de divers SGBD.
yiidbTableSchema est utilisé pour décrire la structure de la table.
yiidbColumnSchema est utilisé pour décrire les informations de champ.
Divers schémas sous yiidbpgsql, yiidbmysql, yiidbsqlite, yiidbmssql, yiidboci, yiidbcubird, utilisés pour décrire en détail divers SGBD.
Dans yiidbConnection, il existe un tableau $schemaMap, qui est utilisé pour établir la relation de mappage entre le pilote de base de données PDO et la classe de schéma spécifique :
public $schemaMap = [ 'pgsql' => 'yii\db\pgsql\Schema', // PostgreSQL 'mysqli' => 'yii\db\mysql\Schema', // MySQL 'mysql' => 'yii\db\mysql\Schema', // MySQL 'sqlite' => 'yii\db\sqlite\Schema', // sqlite 3 'sqlite2' => 'yii\db\sqlite\Schema', // sqlite 2 'sqlsrv' => 'yii\db\mssql\Schema', // newer MSSQL driver on MS Windows hosts 'oci' => 'yii\db\oci\Schema', // Oracle driver 'mssql' => 'yii\db\mssql\Schema', // older MSSQL driver on MS Windows hosts 'dblib' => 'yii\db\mssql\Schema', // dblib drivers on GNU/Linux (and maybe other OSes) hosts 'cubrid' => 'yii\db\cubrid\Schema', // CUBRID ];
Nous pouvons penser que Yii prend en charge ce qui précède tableau par défaut 10 types de SGBD (6 schémas), ce qui est tout à fait suffisant dans la plupart des cas. Si vous utilisez un SGBD au-delà de cette plage, vous pouvez écrire vous-même un schéma afin que Yii puisse prendre en charge le SGBD tout en garantissant la compatibilité.
Classe de base de schéma
yiidbSchema est une classe abstraite, et l'implémentation spécifique repose sur 6 sous-classes de Schema pour différents SGBD. Pour attraper le voleur en premier, attrapez d'abord le roi. Lors de la lecture du code, lisez d'abord la classe de base. Jetons d'abord un coup d'œil à ce yiidbSchema :
abstract class Schema extends Object { // 预定义16种基本字段类型,这16种类型是与DBMS无关的,具体到特定的DBMS时,Yii会自动 // 转换成合适的数据库字段类型。 const TYPE_PK = 'pk'; const TYPE_BIGPK = 'bigpk'; const TYPE_STRING = 'string'; const TYPE_TEXT = 'text'; const TYPE_SMALLINT = 'smallint'; const TYPE_INTEGER = 'integer'; const TYPE_BIGINT = 'bigint'; const TYPE_FLOAT = 'float'; const TYPE_DECIMAL = 'decimal'; const TYPE_DATETIME = 'datetime'; const TYPE_TIMESTAMP = 'timestamp'; const TYPE_TIME = 'time'; const TYPE_DATE = 'date'; const TYPE_BINARY = 'binary'; const TYPE_BOOLEAN = 'boolean'; const TYPE_MONEY = 'money'; // 加载表schema,需要子类具体实现 abstract protected function loadTableSchema($name); // ... ... }
yiidbSchema. types avec les différences les plus évidentes entre les SGBD et provide. Il existe 16 types de champs de base. Ces 16 types n'ont rien à voir avec le SGBD. Lorsqu'il s'agit d'un SGBD spécifique, Yii le convertira automatiquement dans le type de champ de base de données approprié. En programmation, si nous devons spécifier des types de champs, nous utilisons ces 16 types. Dans ce cas, il n’est pas nécessaire de déterminer si le SGBD spécifique utilisé le prend en charge.
Vous saurez ce que signifient ces 16 types rien qu’en les regardant, nous n’entrerons donc pas dans les détails.
yiidbSchema::loadTableSchema() est l'instruction la plus importante de toute la classe de base. Elle définit une fonction de chargement du schéma de la table, qui doit être implémentée par une sous-classe pour un SGBD spécifique. Ici, nous prenons la sous-classe yiidbmysqlSchema comme exemple pour expliquer :
class Schema extends \yii\db\Schema { // 定义一个数据类型的映射关系 public $typeMap = [ 'tinyint' => self::TYPE_SMALLINT, 'bit' => self::TYPE_INTEGER, 'smallint' => self::TYPE_SMALLINT, 'mediumint' => self::TYPE_INTEGER, 'int' => self::TYPE_INTEGER, 'integer' => self::TYPE_INTEGER, 'bigint' => self::TYPE_BIGINT, 'float' => self::TYPE_FLOAT, 'double' => self::TYPE_FLOAT, 'real' => self::TYPE_FLOAT, 'decimal' => self::TYPE_DECIMAL, 'numeric' => self::TYPE_DECIMAL, 'tinytext' => self::TYPE_TEXT, 'mediumtext' => self::TYPE_TEXT, 'longtext' => self::TYPE_TEXT, 'longblob' => self::TYPE_BINARY, 'blob' => self::TYPE_BINARY, 'text' => self::TYPE_TEXT, 'varchar' => self::TYPE_STRING, 'string' => self::TYPE_STRING, 'char' => self::TYPE_STRING, 'datetime' => self::TYPE_DATETIME, 'year' => self::TYPE_DATE, 'date' => self::TYPE_DATE, 'time' => self::TYPE_TIME, 'timestamp' => self::TYPE_TIMESTAMP, 'enum' => self::TYPE_STRING, ]; }
yiidbmysqlSchema définit d'abord une relation de mappage. Cette relation de mappage est la relation de mappage entre les types de champs de la base de données MySQL et les 16 types de données de base que nous avons mentionnés. plus tôt. . En d'autres termes, basé sur le schéma MySQL, utilisant les types de champs MySQL, il sera converti en 16 types de données de base unifiés.
Informations sur la table (Schéma de table)
La classe yiidbTableSchema est utilisée pour décrire les informations de la table de données :
class TableSchema extends Object { public $schemaName; // 所属的Schema public $name; // 表名,不包含Schema部分 public $fullName; // 表的完整名称,可能包含一个Schema前缀。 public $primaryKey = []; // 主键 public $sequenceName; // 主键若使用sequence,该属性表示序列名 public $foreignKeys = []; // 外键 public $columns = []; // 字段 // ... ... }
À partir du code ci-dessus, yiidbTableSchema compare Simple. Vous pouvez comprendre à peu près à quoi ils servent en jetant un œil aux attributs ci-dessus. Cliquons un peu ici pour le comprendre.
Informations sur la colonne (Column Schema)
La classe yiidbColumnSchema est utilisée pour décrire les informations d'un champ, jetons un coup d'oeil :
class ColumnSchema extends Object { public $name; // 字段名 public $allowNull; // 是否可以为NULL /** * @var string abstract type of this column. Possible abstract types include: * string, text, boolean, smallint, integer, bigint, float, decimal, datetime, * timestamp, time, date, binary, and money. */ public $type; // 字段的类型 /** * @var string the PHP type of this column. Possible PHP types include: * `string`, `boolean`, `integer`, `double`. */ public $phpType; // 字段类型对应的PHP数据类型 /** * @var string the DB type of this column. Possible DB types vary according to the type of DBMS. */ public $dbType; public $defaultValue; // 字段默认值 public $enumValues; // 若字段为枚举类型,该属性用于表示可供枚举的值 /** * @var integer display size of the column. */ public $size; public $precision; // 若字段为数值,该属性用于表示精度 /** * @var integer scale of the column data, if it is numeric. */ public $scale; /** * @var boolean whether this column is a primary key */ public $isPrimaryKey; // 是否是主键 public $autoIncrement = false; // 是否是自增长字段 /** * @var boolean whether this column is unsigned. This is only meaningful * when [[type]] is `smallint`, `integer` or `bigint`. */ public $unsigned; // 是否是unsigned,仅对支持的类型有效 public $comment; // 字段描述信息 /** * Converts the input value according to [[phpType]] after retrieval from the database. * If the value is null or an [[Expression]], it will not be converted. * @param mixed $value input value * @return mixed converted value */ public function phpTypecast($value) { if ($value === '' && $this->type !== Schema::TYPE_TEXT && $this->type !== Schema::TYPE_STRING && $this->type !== Schema::TYPE_BINARY) { return null; } if ($value === null || gettype($value) === $this->phpType || $value instanceof Expression) { return $value; } switch ($this->phpType) { case 'resource': case 'string': return is_resource($value) ? $value : (string) $value; case 'integer': return (int) $value; case 'boolean': return (bool) $value; case 'double': return (double) $value; } return $value; } /** * Converts the input value according to [[type]] and [[dbType]] for use in a db query. * If the value is null or an [[Expression]], it will not be converted. * @param mixed $value input value * @return mixed converted value. This may also be an array containing the value as the first element * and the PDO type as the second element. */ public function dbTypecast($value) { // the default implementation does the same as casting for PHP but it should be possible // to override this with annotation of explicit PDO type. return $this->phpTypecast($value); } }
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Avec le développement continu de la technologie du cloud computing, la sauvegarde des données est devenue quelque chose que chaque entreprise doit faire. Dans ce contexte, il est particulièrement important de développer un système de sauvegarde cloud hautement disponible. Le framework PHP Yii est un framework puissant qui peut aider les développeurs à créer rapidement des applications Web hautes performances. Ce qui suit explique comment utiliser le framework Yii pour développer un système de sauvegarde cloud hautement disponible. Conception du modèle de base de données Dans le framework Yii, le modèle de base de données est une partie très importante. Parce que le système de sauvegarde des données nécessite beaucoup de tables et de relations

Alors que la demande d'applications Web continue de croître, les développeurs ont de plus en plus de choix dans le choix des frameworks de développement. Symfony et Yii2 sont deux frameworks PHP populaires. Ils ont tous deux des fonctions et des performances puissantes, mais face à la nécessité de développer des applications Web à grande échelle, quel framework est le plus adapté ? Nous procéderons ensuite à une analyse comparative de Symphony et Yii2 pour vous aider à faire un meilleur choix. Présentation de base Symphony est un framework d'application Web open source écrit en PHP et basé sur

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 ActiveRecord, requête QueryBuilder, requête de commande et requête SQL originale.

À mesure qu’Internet continue de se développer, la demande de développement d’applications Web augmente également. Pour les développeurs, le développement d'applications nécessite un cadre stable, efficace et puissant, qui peut améliorer l'efficacité du développement. Yii est un framework PHP hautes performances de premier plan qui offre des fonctionnalités riches et de bonnes performances. Yii3 est la version nouvelle génération du framework Yii, qui optimise davantage les performances et la qualité du code basé sur Yii2. Dans cet article, nous présenterons comment utiliser le framework Yii3 pour développer des applications PHP.

À l’ère actuelle de l’information, le big data, l’intelligence artificielle, le cloud computing et d’autres technologies sont devenus au centre des préoccupations des grandes entreprises. Parmi ces technologies, la technologie de rendu des cartes graphiques, en tant que technologie de traitement graphique haute performance, fait l'objet de plus en plus d'attention. La technologie de rendu des cartes graphiques est largement utilisée dans le développement de jeux, les effets spéciaux de films et de télévision, la modélisation technique et d'autres domaines. Pour les développeurs, choisir un framework adapté à leurs projets est une décision très importante. Parmi les langages actuels, PHP est un langage très dynamique. Quelques excellents frameworks PHP comme Yii2, Ph.

Si vous demandez « Qu'est-ce que Yii ? », consultez mon tutoriel précédent : Introduction au framework Yii, qui passe en revue les avantages de Yii et décrit les nouveautés de Yii 2.0, publié en octobre 2014. Hmm> Dans cette série Programmation avec Yii2, je guiderai les lecteurs dans l'utilisation du framework Yii2PHP. Dans le didacticiel d'aujourd'hui, je vais partager avec vous comment tirer parti des fonctionnalités de la console Yii pour exécuter des tâches cron. Dans le passé, j'ai utilisé wget - une URL accessible sur le Web - dans une tâche cron pour exécuter mes tâches en arrière-plan. Cela soulève des problèmes de sécurité et entraîne des problèmes de performances. Alors que je discutais de certaines façons d'atténuer les risques dans notre série Sécurité pour les startups, j'avais espéré passer aux commandes pilotées par la console.

Dans le développement de logiciels modernes, créer un système de gestion de contenu (CMS) puissant n’est pas une tâche facile. Non seulement les développeurs doivent posséder des compétences et une expérience approfondies, mais ils doivent également utiliser les technologies et les outils les plus avancés pour optimiser leurs fonctionnalités et leurs performances. Cet article explique comment utiliser Yii2 et GrapeJS, deux logiciels open source populaires, pour implémenter un CMS back-end et une édition visuelle frontale. Yii2 est un framework PHPWeb populaire qui fournit des outils et des composants riches pour créer rapidement

Framework Yii : cet article présente la méthode de Yii pour convertir des objets en tableaux ou les afficher directement au format json. Il a une certaine valeur de référence et j'espère qu'il pourra vous aider.
