私は3つのデータベースを持っています、すべてのデータベースは同じフィールドを持つ同じテーブルを持っていますが、私はYiiで同時に3つのデータベースのすべてのすべてのレコードを取得する方法を知らない。Yii複数のデータベース接続
助けてください
私は3つのデータベースを持っています、すべてのデータベースは同じフィールドを持つ同じテーブルを持っていますが、私はYiiで同時に3つのデータベースのすべてのすべてのレコードを取得する方法を知らない。Yii複数のデータベース接続
助けてください
1. DB接続の設定から始めます。保護/設定/ main.phpを開き、ガイドに記載されているように、一次接続を定義:
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=db1',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
),
2.Thenはそれをコピーし、「DB2」に「DB」コンポーネントの名前を変更し、それに応じて接続文字列を変更します。また、あなたは次のようにクラス名を追加する必要があります。
'db2'=>array(
'class'=>'CDbConnection',
'connectionString' => 'mysql:host=localhost;dbname=db2',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
),
3.Thenは「DB3」に「DB」コンポーネントの名前を変更し、それに応じて、接続文字列を変更し、それをコピーします。また、次のようにクラス名を追加する必要があります。
'db2'=>array(
'class'=>'CDbConnection',
'connectionString' => 'mysql:host=localhost;dbname=db2',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
),
4.それはそれです。さて、あなたは、2つのデータベース接続を持っているし、次のようにDAOとクエリビルダでそれらを使用することができます。
$db1Rows = Yii::app()->db->createCommand($sql)->queryAll();
$db2Rows = Yii::app()->db2->createCommand($sql)->queryAll();
$db3Rows = Yii::app()->db2->createCommand($sql)->queryAll();
ありがとうナンヒが、私が探しているものではない、私は一度に3つのデータベースすべてから結果を得る必要がある(1つのクエリ/行) 、同じ時刻 –
あなた自身の関数の例を書くことができますgetAllData(){ $ sql = "SELECT * FROM table_name"; $ db1Rows = Yii :: app() - > db-> createCommand($ sql) - > queryAll(); $ db2Rows = Yii :: app() - > db2-> createCommand($ sql) - > queryAll(); $ db3Rows = Yii :: app() - > db2-> createCommand($ sql) - > queryAll(); 戻り値array_merge($ db1Rows、$ db2Rows、$ db3Rows); –
だけのconfig/main.php
'db1'=>array(
'connectionString' => 'mysql:host=localhost;dbname=database1',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
),
'db2'=>array(
'connectionString' => 'mysql:host=localhost;dbname=database2',
'username' => 'root',
'password' => '',
'class'=>'CDbConnection', // DO NOT FORGET THIS!
),
、今あなたがに接続することが可能に新しいデータベース接続を追加しますこのようなデータベース:
Yii::app()->db1 ...
Yii::app()->db2 ...
チェックこの記事はもっと説明します
http://www.yiiframework.com/wiki/123/multiple-database-support-in-yii/
と、この:
http://www.yiiframework.com/wiki/78/multiple-databases-and-multiple-domains/
使用エイリアステーブルを結合しています。 – Rikesh
あなたはおそらく[シャーディング](http://www.codefutures.com/database-sharding/)を探しています。これは、YiiコアATMではサポートされていません。 –
おかげでマイケルは、私が探している用語ですが、私はdbシャーディングが必要です –