Kohana 3.2跨多个数据库的ORM相关模型?
我有一个非标准的数据库设置要处理,我正试图让这个测试用例在Kohana3.2中工作,但没有任何运气。情景: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
- 我有一个使用数据库的课程模型
- 我有一个使用数据库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/>';
}