我有一个非标准的数据库设置可以使用,我试图让这个测试用例在Kohana 3.2中工作,但没有任何运气。情形:
课程模型
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/>';
}
但$ member-&gt; username会产生一个空对象。空物会让我伤心。
想法? Kohana ORM可以在多个数据库中以这种方式工作吗?
答案 0 :(得分:1)
使用LEAP ORM for Kohana可以轻松完成此操作。在LEAP中,您所要做的就是在模型中指定要使用的数据源(即数据库配置组),ORM将处理数据库之间的切换,因为它使用数据库连接池。 Leap还允许您在数据库方言之间切换,因为该模块具有DB2,Firebird,MariaDB,MS SQL,MySQL,Oracle,PostgreSQL和SQLite的驱动程序。您可以在https://github.com/spadefoot/kohana-orm-leap从github下载LEAP ORM。
答案 1 :(得分:0)
答案有点晚了,但这是解决方案。改变
foreach ($course->members as $member)
{
echo '-' . $member->username . '<br/>';
}
有关:
foreach ($course->members->find_all() as $member)
{
echo '-' . $member->username . '<br/>';
}