Php Joomla外部JTable连接

Php Joomla外部JTable连接,php,joomla,joomla2.5,Php,Joomla,Joomla2.5,我有一个需要远程连接的数据库,它与Joomla数据库不同 我可以在其他模型中轻松做到这一点,但JModelAdmin给出了一些问题,因为它似乎需要JTable才能正常工作 我试图重写JTable实例以使用我的外部数据库,但是它似乎不想工作,并且在“reset”中出错。我猜JTable也需要访问核心Joomla表 有什么简单的方法可以做到这一点吗?还是覆盖核心是唯一的选择 编辑: 为了澄清,我可以让Joomla连接到数据库并运行查询。唯一的问题是JTable拒绝使用外部数据库正确初始化 以下是我的

我有一个需要远程连接的数据库,它与Joomla数据库不同

我可以在其他模型中轻松做到这一点,但JModelAdmin给出了一些问题,因为它似乎需要JTable才能正常工作

我试图重写JTable实例以使用我的外部数据库,但是它似乎不想工作,并且在“reset”中出错。我猜JTable也需要访问核心Joomla表

有什么简单的方法可以做到这一点吗?还是覆盖核心是唯一的选择

编辑: 为了澄清,我可以让Joomla连接到数据库并运行查询。唯一的问题是JTable拒绝使用外部数据库正确初始化

以下是我的模型中的构造函数:

function __construct($config = array()){
    $config['dbo'] = TireApiHelper::tireAPIDB();
    parent::__construct($config);
} 

这适用于我的列表模型,但不适用于我的管理模型。我的列表模型不需要表类,但是控制器需要使用管理模型来发布/取消发布,这就是问题所在。即使JTable使用当前设置的DB实例,它也会返回false,而不会出现Joomla错误(根据代码,如果
$table
返回false,我应该会看到joomla错误。

有几种方法可以实现这一点,但关键是创建一个新的数据库对象。您可以找到有关如何执行此操作的说明。拥有此对象后,您可以:

  • 将JTable类扩展设置为通过构造函数或使用
    setDBO(…)
    方法使用它。请参阅
  • 选择使用此对象和不带任何JTable的查询对象,如中所述

  • 干杯。

    有几种方法可以实现这一点,但关键是创建一个新的数据库对象。您可以找到有关如何执行此操作的说明。拥有此对象后,您可以:

  • 将JTable类扩展设置为通过构造函数或使用
    setDBO(…)
    方法使用它。请参阅
  • 选择使用此对象和不带任何JTable的查询对象,如中所述

  • 干杯。

    我想我应该扩展一下,我对连接没有问题,但是JTable拒绝使用新的数据库,在从modeadmin.php、modelform.php、model.php和table.php倾注了2000多行代码之后,我看不出它有什么理由不工作。除非它不喜欢InnoDB?它与InnoDB没有问题,你到底想干什么r错误说明?致命错误:调用成员函数reset()在第850行的/./component/modeladmin.php中的非对象上,这告诉我$table返回false,但没有joomla错误。它似乎没有找到您的JTable类扩展。您应该首先确保类型和前缀正确。如果不起作用,请确保构造函数中的数据库表正确(我猜您的另一个数据库没有使用joomla前缀)并检查您在其中指定为主键的字段。是的,我刚刚找到了答案,是的,这就是答案(在我阅读本文之前找到的)。谢谢,我将标记yous作为答案。问题源于table类与Joomla中的其他类不同,前缀的table部分是自动的。我想我应该扩展,我对连接没有问题,但是JTable拒绝使用新数据库,并且在从modeadmin.php倾注了2000多行代码之后,modelform.php、model.php和table.php我认为它没有理由不工作。除非它不喜欢InnoDB?它与InnoDB没有问题,您的错误到底是什么?致命错误:调用成员函数reset()在第850行的/./component/modeladmin.php中的非对象上,这告诉我$table返回false,但没有joomla错误。它似乎没有找到您的JTable类扩展。您应该首先确保类型和前缀正确。如果不起作用,请确保构造函数中的数据库表正确(我猜您的另一个数据库没有使用joomla前缀)并检查您在其中指定为主键的字段。是的,我刚刚找到了答案,是的,这就是答案(在我阅读本文之前找到的)。谢谢。我将标记yous作为答案。问题源于table类与Joomla中的其他类不同,前缀的table部分是自动的。