Kohana 3.2跨多个数据库的ORM相关模型?

Kohana 3.2跨多个数据库的ORM相关模型?,orm,kohana,kohana-3,kohana-orm,Orm,Kohana,Kohana 3,Kohana Orm,我有一个非标准的数据库设置要处理,我正试图让这个测试用例在Kohana3.2中工作,但没有任何运气。情景: 我有一个使用数据库的课程模型 我有一个使用数据库B的成员模型 我在数据库a中有一个成员联接表 课程模式 class Model_Course extends ORM { // Select the DB protected $_db_group = 'default'; // override primary key protected $_primary_key = 'cours

我有一个非标准的数据库设置要处理,我正试图让这个测试用例在Kohana3.2中工作,但没有任何运气。情景:

  • 我有一个使用数据库的课程模型
  • 我有一个使用数据库B的成员模型
  • 我在数据库a中有一个成员联接表
课程模式

class Model_Course extends ORM {

// Select the DB
protected $_db_group = 'default';

// override primary key
protected $_primary_key = 'courseid';

// Relationship
protected $_has_many = array(
    'members' => array(
        'model'   => 'member',
        'foreign_key' => 'memberID',
        'through' => 'courses_members',
    ),
);

}
会员模式

class Model_Member extends ORM {

// Select the DB
protected $_db_group = 'alternate';

// override primary key
protected $_primary_key = 'memberID';

// Relationship
protected $_has_many = array(
    'courses' => array(
      'model'   => 'course',
      'foreign_key' => 'courseid',
      'through' => 'courses_members'
    ),
);

}
现在,在我的控制器中,我正在尝试回显一些测试数据

$courses = ORM::factory('course')->find_all();

foreach ($courses as $course) 
{
  echo $course->coursename . '<br/>';

  foreach ($course->members as $member) 
  {
    echo '-' . $member->username . '<br/>';
  }

  echo '<hr/>';

}
$courses=ORM::factory('courses')->find_all();
foreach($课程作为$课程)
{
echo$course->coursename.“
”; foreach($course->members as$member) { 回显'-'.$member->用户名'
'; } 回声“
”; }
但是$member->username会导致一个空对象。空的东西让我伤心


想法?Kohana ORM能以这种方式跨多个数据库工作吗?

这可以通过使用。在LEAP中,您只需在模型中指定要使用的数据源(即数据库配置组),ORM将处理数据库之间的切换,因为它使用数据库连接池。Leap还允许您在数据库方言之间切换,因为该模块具有DB2、Firebird、MariaDB、MS SQL、MySQL、Oracle、PostgreSQL和SQLite的驱动程序。您可以从github下载LEAP ORM。

现在回答问题有点晚了,但这里是解决方案。改变

foreach ($course->members as $member) 
{
    echo '-' . $member->username . '<br/>';
}
foreach($course->members as$member)
{
回显'-'.$member->用户名'
'; }
用于:

foreach($course->members->find_all()作为$member)
{
回显'-'.$member->用户名'
'; }
我自己刚开始在我的Kohana应用程序中使用Leap,效果非常好。它使使用多个数据库变得很容易,就像Matthew说的那样。这是否意味着使用官方ORM是不可能的?
foreach ($course->members->find_all() as $member) 
{
    echo '-' . $member->username . '<br/>';
}