yii来自另一个数据库的活动记录相关记录

Itnelo

我在一个module / models文件夹中有一个名为SuperModel的模型。以及相关的ChildModel1,ChildModel2在另一个module / models文件夹中。

来自database1的SuperModel数据记录必须包含相关记录Child1和Child2,这些记录位于另一个数据库中。

有没有办法通过yii ActiveRecord关系机制同时使用几个数据库的关系来获取记录?像这样的东西:

$super_record = SuperRecordModel::model()->with( 
    'RecordFromDB_A',
    'RecordFromDB_B' 
)->findAll( $criteria );

或者我需要使用类似的东西:

// From first DB...
$super_record = SuperRecordModel::model()->findAll();

// Separately from another DB A...
$super_record->ChildsA = ChildsAModel::model()->findAll(
    't.parent_id = :super_record_id'
);

// Separately from another DB B...
$super_record->ChildsB = ChildsBModel::model()->findAll( 
    't.parent_id = :super_record_id'
);

怎么了

更新:我不能在多数据库选择操作中使用yii活动记录关系...如何在活动记录方法中的数据库之间切换?例子:

$catalogs = $this->findAll();

// Set new database connection for this context..
// $this->setDbConnection( yii::app()->db2 );

foreach( $catalogs as &$catalog ) {
    $catalog->service = Services::model()->find(
        't.catalog_id = :catalog_id', ... );
    // this gives error: table services cannot be found in the database
}
Itnelo

Okey,我浏览了文档,评论,现在解决了这个问题。

一个数据库中的表不能直接引用另一数据库中的表,这意味着关系不会跨越数据库边界。

http://www.yiiframework.com/wiki/123/multiple-database-support-in-yii/

解决方案。让我们为将来将使用的模块的所有数据库连接编写设置参数。例子:

'modules' => array(
    'module_name' => array(
        'db1' => array(
            'class' => 'CDbConnection',
            'connectionString' => 'mysql:host=...;dbname=db1',
            'username' => 'user',
            'password' => 'password',
            'charset' => 'utf8',
        ),
        'db2' => array(
            'class' => 'CDbConnection',
            'connectionString' => 'mysql:host=...;dbname=db2',
            'username' => 'user',
            'password' => 'password',
            'charset' => 'utf8',
        ),
    )
),

...

在模块init()方法或另一个逻辑入口点中,您需要创建CDbConnection类的对象,就像这样:

$db1_connection = Yii::createComponent( Yii::app()->controller->module->db1 );
$db2_connection = Yii::createComponent( Yii::app()->controller->module->db2 );

然后用于CDbConnection::createCommand从数据库中获取所需的数据。

// Records from db1.
$parent_records = $db1_connection
    ->createCommand('SELECT * FROM parent_table')
    ->queryAll();

// Records from db2 as childs of parent record.
foreach( $parent_records as &$parent_record ) {
    $parent_record['childs'] = $db2_connection
        ->createCommand('SELECT * FROM child_table WHERE parent_id = :parent_id')
        ->bindParam(':parent_id', $parent_record['parent_id'])
        ->queryAll();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MySQL从一个数据库插入另一个数据库

来自分类Dev

perl使用来自另一个数据库的值更新oracle数据库

来自分类Dev

SQL,将数百万条记录从一个数据库移动到另一个数据库

来自分类Dev

来自CAS的用户名和来自另一个数据库的角色

来自分类Dev

从一个数据库表插入到另一个

来自分类Dev

MySQL在另一个表中找到与记录相关的最小和最大日期

来自分类Dev

识别不在另一个数据框中的记录

来自分类Dev

从另一个数据库更新SQL Server数据库

来自分类Dev

根据另一个数据框重命名多列中的记录

来自分类Dev

yii2用来自另一个表的记录填充网格

来自分类Dev

当另一个数据库插入记录时,如何更新一个数据库?

来自分类Dev

来自另一个数据库的MySQL子查询,其中表名取决于主查询

来自分类Dev

Laravel 4.2:将数据库记录从一个数据库复制到另一个数据库

来自分类Dev

如何将记录从相互链接的表复制到另一个数据库中的另一个表?

来自分类Dev

如何基于一个表与另一个数据库中的同一表更新数据库中的表记录?

来自分类Dev

计数数据库中具有另一个表ID的ID的记录数?

来自分类Dev

从一个数据库表插入到另一个

来自分类Dev

MySQL从一个数据库插入另一个数据库

来自分类Dev

如何将一个记录与同一表中的另一个记录相关联?

来自分类Dev

如何命名与Oracle中另一个表的列的记录相同的列

来自分类Dev

将记录从一个数据库复制到另一个数据库(Teradata到SQL Server)

来自分类Dev

识别不在另一个数据框中的记录

来自分类Dev

如何访问另一个应用程序数据库并插入一些记录

来自分类Dev

Laravel 5.2:数据库记录获取并检查另一个表中的ID

来自分类Dev

在另一个活动记录上过滤活动记录

来自分类Dev

查找另一个供应商数据库中作为两个记录存在的一条记录

来自分类Dev

使用cloudant / couchDB更新处理程序将记录写入另一个数据库

来自分类Dev

db 中的 SQL Update 字段来自对另一个数据库的双重查找

来自分类Dev

如何确定一个实体是否在多个数据库记录中一直处于活动状态?

Related 相关文章

  1. 1

    MySQL从一个数据库插入另一个数据库

  2. 2

    perl使用来自另一个数据库的值更新oracle数据库

  3. 3

    SQL,将数百万条记录从一个数据库移动到另一个数据库

  4. 4

    来自CAS的用户名和来自另一个数据库的角色

  5. 5

    从一个数据库表插入到另一个

  6. 6

    MySQL在另一个表中找到与记录相关的最小和最大日期

  7. 7

    识别不在另一个数据框中的记录

  8. 8

    从另一个数据库更新SQL Server数据库

  9. 9

    根据另一个数据框重命名多列中的记录

  10. 10

    yii2用来自另一个表的记录填充网格

  11. 11

    当另一个数据库插入记录时,如何更新一个数据库?

  12. 12

    来自另一个数据库的MySQL子查询,其中表名取决于主查询

  13. 13

    Laravel 4.2:将数据库记录从一个数据库复制到另一个数据库

  14. 14

    如何将记录从相互链接的表复制到另一个数据库中的另一个表?

  15. 15

    如何基于一个表与另一个数据库中的同一表更新数据库中的表记录?

  16. 16

    计数数据库中具有另一个表ID的ID的记录数?

  17. 17

    从一个数据库表插入到另一个

  18. 18

    MySQL从一个数据库插入另一个数据库

  19. 19

    如何将一个记录与同一表中的另一个记录相关联?

  20. 20

    如何命名与Oracle中另一个表的列的记录相同的列

  21. 21

    将记录从一个数据库复制到另一个数据库(Teradata到SQL Server)

  22. 22

    识别不在另一个数据框中的记录

  23. 23

    如何访问另一个应用程序数据库并插入一些记录

  24. 24

    Laravel 5.2:数据库记录获取并检查另一个表中的ID

  25. 25

    在另一个活动记录上过滤活动记录

  26. 26

    查找另一个供应商数据库中作为两个记录存在的一条记录

  27. 27

    使用cloudant / couchDB更新处理程序将记录写入另一个数据库

  28. 28

    db 中的 SQL Update 字段来自对另一个数据库的双重查找

  29. 29

    如何确定一个实体是否在多个数据库记录中一直处于活动状态?

热门标签

归档