OceanBase
English日本語简体中文
ドキュメントホーム
製品
エコシステム
リリース

データベース

OceanBase CloudOceanBaseデータベース

データベース

OceanBase CloudOceanBaseデータベース
OceanBase CloudOceanBaseデータベース

OceanBaseデータベース

  • エコシステム統合の概要
  • ORMフレームワーク
    • Java
      • SpringBootサンプルプログラム
      • SpringBatchサンプルプログラム
      • Spring JDBCサンプルプログラム
      • SpringDataJPAサンプルプログラム
      • Hibernateサンプルプログラム
      • MyBatisサンプルプログラム
    • Python
      • SQLAlchemyによるOceanBaseデータベース接続サンプルプログラム
      • peeweeによるOceanBaseデータベース接続サンプルプログラム
      • Tortoise ORM による OceanBase データベース接続サンプルプログラム
    • Go
      • GORMサンプルプログラム
    • Rust
      • SeaORM による OceanBase データベース接続サンプルプログラム
    • Ruby
      • ActiveRecordによるOceanBaseデータベース接続サンプルプログラム
      • Sequel で OceanBase データベースに接続するサンプルプログラム
      • Ruby on RailsによるOceanBaseデータベース接続サンプルプログラム
    • Node.js
      • SequelizeでOceanBaseデータベースに接続する
      • TypeORMを使用してOceanBaseデータベースに接続する
      • Prismaを使用してOceanBaseデータベースに接続する
      • Drizzle ORMを使用してOceanBaseデータベースに接続する
    • C#
      • Dapperを使用してOceanBaseデータベースに接続する
      • SqlSugarを使用してOceanBaseデータベースに接続する
      • FreeSQLを使用してOceanBaseデータベースに接続する
    • PHP
      • Yii 2.0 ORMサンプルプログラム
      • Laravel Eloquent ORMサンプルプログラム
  • データベースのバージョン管理
    • Liquibaseを使用したOceanBaseデータベースのバージョンの管理
    • Flywayを使用してOceanBaseデータベースを統合し、バージョン管理を実現する
  • データ統合
    • dbtを使用したOceanBaseデータの分析
    • Flink DirectLoadを使用したOceanBaseのダイレクトインポート
    • SeaTunnelを使用したOceanBaseデータの読み取りと同期
    • Maxwellを使用したOceanBaseデータの読み取り
    • Debeziumを使用してOceanBaseに接続し、データを取得する
    • Spark Catalogを使用してOceanBaseデータベースに接続する
    • Apache NiFiを使用してOceanBaseデータベースと統合する
  • SQL開発
    • WebLogicを使用してOceanBaseデータベースに接続する
    • DBeaverを使用してOceanBaseデータベースに接続する
    • Navicatを使用してOceanBaseデータベースに接続する
    • DataGripでOceanBaseデータベースに接続する
    • TablePlusでOceanBaseデータベースに接続する
    • DMSを使用したOceanBaseデータベースの管理
  • 編成とスケジューリング
    • AirflowとOceanBaseデータベースの連携
    • PowerJobとOceanBaseデータベースの連携
    • DolphinSchedulerにOceanBaseデータソースを設定する
    • LinkisとOceanBaseデータベースの統合
  • 可視化ツール
    • SupersetとOceanBaseを使用したデータ分析
    • Power BIでOceanBaseに接続してデータを取得する
    • Quick BIでOceanBaseに接続してデータを取得する
    • Bytebaseを使用したOceanBaseインスタンスの管理
  • データベース管理
    • NineDataを使用したOceanBaseデータソースの管理
    • Bytebaseを使用したOceanBaseインスタンスの管理
  • AI
    • OpenAI
    • Qwen
    • OceanBaseデータベースとLangChainの統合
    • OceanBaseデータベースのベクトル検索機能とLlamaIndexの連携
    • OceanBaseデータベースのベクトル検索機能とDifyの連携
    • OceanBaseデータベースとn8nの連携
    • OceanBase MCP ServerとTraeの連携
    • OceanBaseデータベースとSpring AI Alibabaの連携
    • OceanBase MCP ServerとClineの連携
    • OceanBase MCP ServerとCursorの連携
    • OceanBase MCP ServerとContinueの連携
    • Google GenAI Toolboxを使用して独自のOceanBase MCP Serverを構築する
    • OceanBaseデータベースとCamelAIの連携
    • OceanBase VectorとFirecrawlの連携
    • OceanBase VectorとHugging Faceの連携
    • OceanBase VectorとOllamaの連携
    • OceanBaseデータベースとGoogle Geminiの連携
    • OceanBase VectorとCloudflare Workers AIの連携
    • OceanBase VectorとJina AIの連携
    • OceanBase MCP ServerとAugment Codeの連携
    • OceanBase MCP ServerとClaude Codeの連携
    • OceanBase MCP ServerとKiroの連携

PDF をダウンロード

ドキュメントフィードバック
  1. ドキュメントセンター
  2. OceanBaseデータベース
  3. master

Yii 2.0 ORMサンプルプログラム

最終更新:2026-10-10 03:12:37

前提条件
操作手順
ステップ1:OceanBaseデータベースの接続文字列を取得する
ステップ2:Yii 2.0プロジェクトを作成し、依存関係をインストールする
ステップ3:データベース接続を設定する
ステップ4:モデルとテーブル構造を作成する
ステップ5:データベース操作コードを記述する
ステップ6:プログラムを実行し、結果を検証する
関連ドキュメント

Yii 2.0は、高性能なPHPフレームワークであり、強力なORM機能を提供します。Yii 2.0のActiveRecordクラスは、データベース操作に対して洗練されたソリューションを提供し、OceanBaseデータベースとの互換性を含め、多様なデータベースシステムをサポートしています。

Yii 2.0 ORMの主な特徴:

  • モデル定義、CRUD操作、関連関係を含む完全なORMサポート
  • MySQL、PostgreSQL、SQLiteなど、多様なデータベースシステムをサポート
  • クエリビルダ、トランザクション処理、データバリデーションなどの高度な機能を提供
  • 高性能なキャッシュメカニズムと遅延読み込み
  • Yii 2.0フレームワークとの深い統合

本記事では、Yii 2.0 ORMを使用してOceanBaseデータベースに接続し、テーブルの作成、データの挿入、更新、クエリなど、基本的なデータベース操作を実装する方法について説明します。

前提条件

  • PHP 7.4以降がインストール済みであること。
  • Composerパッケージ管理ツールがインストール済みであること。
  • OceanBaseデータベースがインストールされ、MySQLモードのテナントが作成済みであること。
  • OceanBaseデータベースの接続文字列を取得済みであること。

操作手順

  1. OceanBaseデータベースの接続文字列を取得します。
  2. Yii 2.0プロジェクトを作成し、依存関係をインストールします。
  3. データベース接続を設定します。
  4. モデルとデータベースマイグレーションを作成します。
  5. データベース操作コードを記述します。
  6. プログラムを実行し、結果を検証します。

ステップ1:OceanBaseデータベースの接続文字列を取得する

OceanBaseデータベースのデプロイ担当者または管理者に連絡して、対応するデータベース接続文字列を取得します。

obclient -h$host -P$port -u$user_name -p$password -D$database_name

パラメータの説明

  • $host:OceanBaseデータベースの接続IPを指定します。OceanBase Database Proxy (ODP)接続方式ではODPアドレスを使用し、直接接続方式ではOBServerノードのIPアドレスを使用します。

  • $port:OceanBaseデータベースの接続ポートを指定します。ODP接続方式のデフォルトは2883ですが、ODPのデプロイ時にカスタマイズ可能です。直接接続方式のデフォルトは2881ですが、OceanBaseデータベースのデプロイ時にカスタマイズ可能です。

  • $database_name:アクセスするデータベースの名前です。

    注意

    テナントに接続するユーザーは、そのデータベースに対するCREATE、INSERT、UPDATE、SELECT権限を持っている必要があります。ユーザー権限に関する詳細については、MySQLモードの権限分類をご参照ください。。

  • $user_name:テナントの接続アカウントを指定します。ODP接続の一般的な形式は:ユーザー名@テナント名#クラスタ名またはクラスタ名:テナント名:ユーザー名です。直接接続方式の形式は:ユーザー名@テナント名です。

  • $password:アカウントのパスワードを指定します。

接続文字列に関する詳細については、OBClientによるOceanBaseテナントへの接続をご参照ください。

例:

obclient -hxxx.xxx.xxx.xxx -P2881 -utest_user001@mysql001 -p****** -Dtest

ステップ2:Yii 2.0プロジェクトを作成し、依存関係をインストールする

  1. Composerを使用して新しいYii 2.0プロジェクトを作成します:

    # Yii 2.0基本アプリケーションテンプレートをインストール
    composer create-project --prefer-dist yiisoft/yii2-app-basic yii2-oceanbase
    cd yii2-oceanbase
    
  2. データベースの依存関係をインストールします:

    composer require --prefer-dist yiisoft/yii2-debug
    composer require --prefer-dist yiisoft/yii2-gii
    
  3. インストールを確認します:

    php yii help
    

    インストールが成功した場合、Yiiのバージョン情報が表示されます。

ステップ3:データベース接続を設定する

config/db.phpファイルを編集し、OceanBaseデータベース接続を設定します:

<?php

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=your_oceanbase_host;port=2881;dbname=your_database',
    'username' => 'your_username',
    'password' => 'your_password',
    'charset' => 'utf8mb4',
    'tablePrefix' => 'tbl_',
    'enableSchemaCache' => true,
    'schemaCacheDuration' => 3600,
    'schemaCache' => 'cache',
    'enableQueryCache' => true,
    'queryCacheDuration' => 3600,
    'attributes' => [
        PDO::ATTR_TIMEOUT => 30, // タイムアウト時間を30秒に設定
    ],
];

ステップ4:モデルとテーブル構造を作成する

  1. Userモデルmodels/User.phpを作成します:

    <?php
    
    namespace app\models;
    
    use Yii;
    use yii\db\ActiveRecord;
    use yii\db\Connection;
    use yii\db\Schema;
    
    class User extends ActiveRecord
    {
        public static function tableName()
        {
            return '{{%user}}';
        }
    
        public function rules()
        {
            return [
                [['username', 'email'], 'required'],
                ['email', 'email'],
                ['age', 'integer', 'min' => 0],
                ['username', 'string', 'max' => 100],
                ['email', 'string', 'max' => 100],
                [['created_at'], 'safe'],
            ];
        }
    
        public function beforeSave($insert)
        {
            if (parent::beforeSave($insert)) {
                if ($this->isNewRecord) {
                    $this->created_at = time();
                }
                return true;
            }
            return false;
        }
    
  2. ユーザーテーブルを作成します:

    CREATE TABLE user (
    id int(11) NOT NULL AUTO_INCREMENT,
    username varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
    email varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
    age int(11) DEFAULT NULL,
    created_at int(11) NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY idx-email (email),
    KEY idx-username (username)
    );
    

ステップ5:データベース操作コードを記述する

  1. コントローラーcontrollers/UserController.phpを作成します:

    <?php
    
    namespace app\controllers;
    
    use Yii;
    use yii\web\Controller;
    use yii\web\Response;
    use app\models\User;
    
    class UserController extends Controller
    {
        public function actionIndex()
        {
    
            // トランザクションを開始
            $transaction = Yii::$app->db->beginTransaction();
    
            try {
                // 1. データを挿入
                $user = new User();
                $user->username = 'oceanbase_user' . time();
                $user->email = 'user' . time() . '******@oceanbase.com';
                $user->age = rand(20, 60);
    
                if (!$user->save()) {
                    throw new \Exception('ユーザーの保存に失敗しました: ' . json_encode($user->getErrors(), JSON_UNESCAPED_UNICODE));
                }
    
                Yii::info('データの挿入に成功しました, ID: ' . $user->id);
    
                // 2. データをクエリ
                $foundUser = User::findOne($user->id);
                if (!$foundUser) {
                    throw new \Exception('ユーザーのクエリに失敗しました: ユーザーが存在しません');
                }
                Yii::info('クエリデータ: ' . json_encode($foundUser->attributes, JSON_UNESCAPED_UNICODE));
    
                // 3. データを更新
                $foundUser->age += 1;
                if (!$foundUser->save()) {
                    throw new \Exception('ユーザーの更新に失敗しました: ' . json_encode($foundUser->getErrors(), JSON_UNESCAPED_UNICODE));
                }
                Yii::info('データの更新に成功しました');
    
                // 4. バッチ挿入の例
                $rows = [];
                $columns = ['username', 'email', 'age', 'created_at'];
                $time = time();
    
                for ($i = 0; $i < 5; $i++) {
                    $rows[] = [
                        'user' . $i . '_' . $time,
                        'user' . $i . '_' . $time . '@example.com',
                        rand(20, 60),
                        $time
                    ];
                }
    
                Yii::$app->db->createCommand()->batchInsert(
                    User::tableName(),
                    $columns,
                    $rows
                )->execute();
    
                Yii::info('5件のデータをバッチ挿入しました');
    
                // 5. 全てのデータをクエリ
                $count = User::find()->count();
                Yii::info("現在のユーザー数: $count");
    
                // 6. ページネーションクエリ
                $pageSize = 3;
                $users = User::find()
                    ->orderBy(['id' => SORT_DESC])
                    ->limit($pageSize)
                    ->all();
    
                Yii::info('ページネーションクエリの結果: ' . count($users) . '件');
    
                // 7. データを削除
                if ($foundUser->delete() === false) {
                    throw new \Exception('ユーザーの削除に失敗しました');
                }
                Yii::info('データの削除に成功しました');
    
                $transaction->commit();
    
                return $this->asJson([
                    'success' => true,
                    'message' => '操作に成功しました',
                    'data' => [
                        'userCount' => $count,
                        'sampleUser' => $foundUser->attributes
                    ]
                ]);
    
            } catch (\Exception $e) {
                $transaction->rollBack();
                Yii::error($e->getMessage());
                return $this->asJson([
                    'success' => false,
                    'message' => '操作に失敗しました: ' . $e->getMessage(),
                ]);
            }
        }
    }
    

ステップ6:プログラムを実行し、結果を検証する

  1. Yiiの組み込み開発サーバーを起動します:

    php yii serve
    
  2. ブラウザでcurl http://localhost:8080/index.php?r=user/indexにアクセスするか、curlを使用してテストします:

    curl http://localhost:8080/index.php?r=user/index
    
  3. 查看 runtime/logs/app.logファイルを確認すると、以下のようなログが出力されているはずです:

    2025-06-10 11:30:15 [info][application] ユーザーデータの処理を開始します...
    2025-06-10 11:30:16 [info][application] ユーザーテーブルuserの作成に成功しました
    2025-06-10 11:30:16 [info][application] データの挿入に成功しました, ID: 1
    2025-06-10 11:30:16 [info][application] クエリデータ: {"id":1,"username":"oceanbase_user1654857016","email":"******@oceanbase.com","age":35,"created_at":1654857016}
    2025-06-10 11:30:16 [info][application] データの更新に成功しました
    2025-06-10 11:30:16 [info][application] 5件のデータをバッチ挿入しました
    2025-06-10 11:30:16 [info][application] 現在のユーザー数: 6
    2025-06-10 11:30:16 [info][application] ページネーションクエリの結果: 3件
    2025-06-10 11:30:16 [info][application] データの削除に成功しました
    
  4. レスポンス結果の例:

    {
        "success":true,"message":"操作に成功しました","data":{"userCount":6,"sampleUser":{"id":1,"username":"oceanbase_user1749628918","email":"******@oceanbase.com","age":31,"created_at":1749628919}}
    }
    

関連ドキュメント

  • Yii 2.0公式ドキュメント
  • Yii 2.0データベースアクセスオブジェクト
  • OceanBaseデータベースドキュメント
  • PHP公式ドキュメント

前のトピック

FreeSQLを使用してOceanBaseデータベースに接続する
前へ

次のトピック

Laravel Eloquent ORMサンプルプログラム
次へ
このページの内容
前提条件
操作手順
ステップ1:OceanBaseデータベースの接続文字列を取得する
ステップ2:Yii 2.0プロジェクトを作成し、依存関係をインストールする
ステップ3:データベース接続を設定する
ステップ4:モデルとテーブル構造を作成する
ステップ5:データベース操作コードを記述する
ステップ6:プログラムを実行し、結果を検証する
関連ドキュメント