热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Yii:在CGridView中显示第二个DB内容

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Yii:在CGridView中显示第二个DB内容相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Yii:在CGridView中显示第二个DB内容相关的知识,希望对你有一定的参考价值。



我正在使用Yii-1.1.13。我有两个数据库,我已在protected/config/main.php中配置如下。

'db2'=>array(
'class' => 'CDbConnection' ,
'connectionString' => 'pgsql:host=localhost;port=5432;dbname=database2',
'emulatePrepare' => true,
'username' => 'zzzzz',
'password' => 'zzzzz',
'charset' => 'utf8',
),
'db'=>array(
'connectionString' => 'pgsql:host=localhost;port=5432;dbname=database1',
'emulatePrepare' => true,
'username' => 'xxxxx',
'password' => 'xxxxx',
'charset' => 'utf8',
),

我正在使用下面的代码显示Yii CGridView中的计数,它工作正常。这将连接database1。

楷模

public function search()
{
$criteria=new CDbCriteria;
$criteria->select='std_id ,count(*) as counts';
$criteria->cOndition= "sdate between '$this->startdate' and '$this->enddate'";
$criteria->group ='std_id';
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'pagination' => array( 'pageSize' => 30 ),
));
}
?>

视图

widget('zii.widgets.grid.CGridView', array(
'id'=>'std_id-grid',
'dataProvider'=>$model->search(),
'columns'=>array(
'std_id',
'counts',
),
)); ?>


在另一个模型中,我有下面的代码来显示将与database2连接的用户详细信息。它没有用,有什么不对。我试过两种不同的方式。请参阅下面的Type-1和Type-2。

我已经引用了this链接来连接Yii中的多个数据库。

楷模

class Usr extends SecDB
{
...
..
public function getDbConnection()
{
return self::getSecDbConnection();
//We need to override this method in the models representing the
//advertising database to return the second DB connection.
}
public function search()
{
// Type -1 Not working
/*$row = Yii::app()->db2->createCommand(array(
'select' => array('id', 'name', 'date_created'),
'from' => 'accounts',
'where' => "type = 'USERS'",
))->queryAll();
return new CActiveDataProvider($this, array(
'criteria'=>$row,
));
*/
// Type -2 Not working
$criteria=new CDbCriteria;
$criteria->select='id,name,date_created';
$criteria->cOndition= "type = 'USERS'";
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
?>
}

视图

widget('zii.widgets.grid.CGridView', array(
'id'=>'users-grid',
'dataProvider'=>$model->search(),
'columns'=>array(
'id',
'name',
'date_created'
),
)); ?>

我已经覆盖了数据库连接。但它不起作用,浏览器中没有任何内容。



我在protected / components / SecDB.php中有SecDB.php

class SecDB extends CActiveRecord {
private static $db2 = null;
public static function getSecDbConnection()
{
if (self::$db2 !== null){
return self::$db2;
}else
{
self::$dbcc = Yii::app()->db2;
if (self::$db2 instanceof CDbConnection)
{
self::$db2->setActive(true);
return self::$db2;
}
else
throw new CDbException(Yii::t('yii','Active Record requires a "db2" CDbConnection application component.'));
}
}
}
?>

答案

您需要在模型中重写getDBConnection()

public function getDbConnection()
{
if (self::$conection !== null)
return self::$conection;
else
{
self::$cOnection= Yii::app()->db2;
if (self::$conection instanceof CDbConnection)
{
self::$conection->setActive(true);
return self::$conection;
}
else
throw new CDbException(Yii::t('yii','Active Record requires a "db2" CDbConnection application component.'));
}
}

对于开发模式,在web / index.php中添加

defined('YII_DEBUG') or define('YII_DEBUG',true);

编辑:

class SecDB extends CActiveRecord {
private static $db2;
public function getDbConnection()
{
if (self::$db2 !== null){
return self::$db2;
}else
{
self::$db2 = Yii::app()->db2;
if (self::$db2 instanceof CDbConnection)
{
self::$db2->setActive(true);
return self::$db2;
}
else
throw new CDbException(Yii::t('yii','Active Record requires a "db2" CDbConnection application component.'));
}
}
}
?>


推荐阅读
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 在使用dedecms过程中,添加自定义字段变量很有用,但删除并不容易。本文介绍了两种常用的删除方法:执行SQL语句和手动SQL删除。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
author-avatar
手机用户2502852037
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有