YII 2フレームワーク接続データベース操作

3553 ワード

データベースを使用して、フレームワークのコアの1つ(もう1つの重要なコアはルーティング実装)であり、フレームワークがデータベースにどのように接続されているかを研究することは、このフレームワークがどのように構築されているかを理解するのに役立つ.Yii 2フレームワークのデータベースアクセスはPHP PDOの上に構築され、データベースアクセス層(DAO)が異なるデータベース(MYSQL、SQLite、MSSQLなど)にアクセスすることを提供する.
Yiiデータベース接続方式
1.SQLベースクエリの使用
$data = \Yii::$app->db->createCommand('SELECT * FROM `test`')->queryAll();
var_dump($data); //          

2.クエリービルダーの使用
1つ目の方法は、データベースが変更されたときにsql文を変更して正常に実行する必要があるという点でよくありません.例えばMYSQLからMSSQLに移行すると、MYSQLのlimit構文はMSSQLでは使用できません.クエリー・ビルダーは、DBMSに関係のないSQL文を作成します.
$queryObj=new \yii\db\Query();
$data=$queryObj->select(['ID','T_NAME','NUMBER'])
	->from('test')
	->limit(3)
	->all();
var_dump($data); //          

3.Active Recordの使用
Active Record(Active Record、以下、ARと略す)は、データベース内のデータにアクセスするためのオブジェクト向けインタフェースを提供する.ARクラスは、1つのデータテーブルに関連付けられ、各ARオブジェクトはテーブル内の1行に対応し、オブジェクトのプロパティ(すなわち、ARのプロパティAttribute)はデータ行の対応する列にマッピングされる.(ARオブジェクト)はデータテーブルの1行に対応し、ARオブジェクトの属性はその行の対応する列をマッピングする.
Active Recordクラス定義
namespace app\models;

use yii\db\ActiveRecord;

use Yii;

class Test extends ActiveRecord
{
	/**
	 * @return string    AR        
	 */
	public static function tableName()
	{
		return 'test';
	}
}

コールモード
1)Testクラスを新規作成し、データベースに保存する
$testObj = new Test();
$testObj->T_NAME = 'lizhibin';
$testObj->NUMBER = 999;
$testObj->save();
)クエリーデータ
var_dump(Test::find()->where(['T_NAME'=>'a'])->all());//      Test    

備考:実際の開発作業では、3つ目の方法でデータベースに接続することをお勧めします.
Giiを使用したModelの生成
1.データベース設計
Giiを使用してモデルを生成する場合は、まずデータテーブルを作成する必要があります.
CREATE TABLE `message` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(64) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `content` text CHARACTER SET utf8 NOT NULL,
  `create_time` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.Giiの使用
http://index.php?r=giiはGiiページに進み、YII_を構成する必要があることに注意するENVは「dev」でしか使えません.Model Generatorをクリックし、messageテーブルに対応するMessage Modelを生成します.
生成されたMessageファイルを開くと、Giiは次のようなクラスを自動的に作成します.
 64],
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        //      ,      
        return [
            'id' => 'ID',
            'title' => 'Title',
            'content' => 'Content',
            'create_time' => 'Create Time',
        ];
    }
}
参照リンク:http://www.yiichina.com/doc/guide/2.0/start-gii
3.CRUD Generatorを使用して簡単な添削修正を生成する
CRUD GeneratorはModel Generatorよりも強力で、自動的に削除・変更機能を生成することができ、特にバックグラウンドに適しています.