[Yii2笔记]045实例,一个页面中连接两种数据库(Mysql和MongoDB) [ 技术分享 ]
说明
学习Yii Framework 2(易2框架)的过程是漫长的,也是充满乐趣的,以下是我学习Yii2框架时的代码实现,提供了较完整的代码,供你参考。不妥之处,请多多指正!
本文主题:实例,一个页面中连接两种数据库(Mysql和MongoDB)
//twodb//2db//使用ActiveRecord D:\phpwork\basic\controllers\CountryController.php
public function actionTwodb() {
$dataMysql = CountryMysql::find()
->limit(10)
->all();
$dataMongodb =Country::find()
->limit(8)
->asArray()
->all();
return $this->render('twodb', ['dataMysql' => $dataMysql,'dataMongodb' => $dataMongodb]);
}
D:\phpwork\basic\models\Country.php
<?php
namespace app\models;
use Yii;
class Country extends \yii\mongodb\ActiveRecord {
public static function collectionName(){
return 'country';
}
public static function getDb(){
//显式指定要使用的链接
return \Yii::$app->mongodb;
}
public function attributes() {
return ['_id', 'code', 'name', 'continent', 'population', 'demo', 'area',];
}
public function rules() {
return [
[['code', 'name', 'continent', 'population'], 'required'],
//[['population'], 'integer'],
[['code','name'], 'unique'],
['population', 'double','min'=>10],
[['demo', 'area'], 'safe'],
[['code'], 'string', 'max' => 2],
[['name'], 'string', 'max' => 52],// [['_id'], 'safe'],//此句多余
];
}
public function attributeLabels() {
return ['code' => Yii::t('app', 'Code'), 'name' => Yii::t('app', 'Name'), 'population' => Yii::t('app', 'Population'), 'shoudu.cname' => Yii::t('app', 'City Name(shoudu)'), 'shoudu.populs' => Yii::t('app', 'Population(shoudu)'), 'shoudu[cname]' => Yii::t('app', 'City Name(shoudu)'), 'shoudu[populs]' => Yii::t('app', 'Population(shoudu)'),];
}
}
D:\phpwork\basic\models\CountryMysql.php
<?php
namespace app\models;
use Yii;
class CountryMysql extends \yii\db\ActiveRecord {
public static function tableName(){
return 'country';
}
public static function getDb(){
//显示式指定要使用的链接
return \Yii::$app->db;
}
public function attributes() {
return ['code', 'name', 'population'];
}
}
D:\phpwork\basic\config\web.php
return [
......
'components' => [
......
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=yiibasic',
'username' => 'yiiuser',
'password' => 'jkljl23asdf23oickxvzklqwer',
'charset' => 'utf8',
],
'mongodb' => [
'class' => 'yii\mongodb\Connection',
'dsn' => 'mongodb://dev:123456@127.0.0.1:27017/admin',
],
]
]
D:\phpwork\basic\views\country\twodb.php
<?php
use yii\helpers\ArrayHelper;
$this->title = Yii::t('app', 'Countries');
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="country-index">
Mysql数据:<br>
<?php
if($dataMysql){
echo "<table class='table table-bordered'><tr>";
echo "<th>#</th>";
echo "<th>index</th>";
echo "<th>Name</th>";
echo "<th>Population</th>";
echo "<th>Code</th>";
echo "</tr>";
$i=1;
foreach($dataMysql as $k=>$v){
echo "<tr>";
echo "<td>".$i."</td>";
echo "<td>".$k."</td>";
echo "<td>".ArrayHelper::getValue($v,'name')."</td>";
echo "<td>".ArrayHelper::getValue($v,'population')."</td>";
echo "<td>".ArrayHelper::getValue($v,'code')."</td>";
echo "</tr>";
$i++;
}
echo "</table>";
}else{
echo "no record";
}
?>
</div>
<div class="country-index">
Mongodb数据:<br>
<?php
if($dataMongodb){
echo "<table class='table table-bordered'><tr>";
echo "<th>#</th>";
echo "<th>index</th>";
echo "<th>Name</th>";
echo "<th>Population</th>";
echo "<th>Continent</th>";
echo "<th>Code</th>";
echo "</tr>";
$i=1;
foreach($dataMongodb as $k=>$v){
echo "<tr>";
echo "<td>".$i."</td>";
echo "<td>".$k."</td>";
echo "<td>".ArrayHelper::getValue($v,'name')."</td>";
echo "<td>".ArrayHelper::getValue($v,'population')."</td>";
echo "<td>".ArrayHelper::getValue($v,'continent')."</td>";
echo "<td>".ArrayHelper::getValue($v,'code')."</td>";
echo "</tr>";
$i++;
}
echo "</table>";
}else{
echo "no record";
}
?>
</div>
测试结果:
/*
Mysql数据:
# index Name Population Code
1 0 Australia 18886000 AU
2 1 Brazil 170115000 BR
3 2 Canada 1147000 CA
4 3 China 1277558000 CN
5 4 Germany 82164700 DE
6 5 France 59225700 FR
7 6 United Kingdom 59623400 GB
8 7 India 1013662000 IN
9 8 Russia 146934000 RU
10 9 United States 278357000 US
Mongodb数据:
# index Name Population Continent Code
1 0 Laowo 196 Europe CA
2 1 Korea 124234 Asia 23
3 2 China 1277558000 Asia CN
4 3 Germany 234234 Asia 42
5 4 Canada 170115000 Asia BR
6 5 Mengo 78 Europe C1
7 6 Nipor 88 Asia C2
8 7 America 1147000 Asia C3
*/
(全文完)
共 0 条回复
没有找到数据。
阿江
注册时间:2015-10-18
最后登录:2024-03-03
在线时长:186小时21分
最后登录:2024-03-03
在线时长:186小时21分
- 粉丝94
- 金钱16816
- 威望160
- 积分20276