我有两个数据库用户和magento。 magento驻留在LAN中的远程机器上。 用户驻留在我的本地机器上。
它们之间的连接和从该magento数据库中获取数据工作正常 但是我想对magento的表数据进行分页。 简单显示它已经完成,但是对于分页我们需要模型名称,我怎么能拥有其他数据库的模型?
// in controller action
$this->Vendor->changeDataSource('vsdatabase');
if($this->changeDbSource('vsdatabase'))
{
$magento_data = $this->Vendor->query("SELECT * from admin_user");
$this->set('products',$magento_data);
}
and changeDataSource($newdb) is defined in model file
and changeDbSource($database='default') in controller
那么如何用分页来解决我的问题呢? 我已经完成了在没有分页的情况下获取数据。 或任何其他选择吗? 谢谢,
答案 0 :(得分:1)
你以错误的方式解决这个问题。
您应该为外部数据库创建一个新的数据库配置,在$vendor_db
中称之为.. app/config/database.php
http://book.cakephp.org/1.3/en/view/922/Database-Configuration
然后您需要一个新连接的模型。告诉模型使用$useDBConfig
:
class Vendor extends AppModel {
var $useDbConfig = 'vendor_db';
}
http://book.cakephp.org/1.3/en/view/1058/useDbConfig
这样,在Vendors控制器中,您可以使用标准cakePHP函数(包括paginate)进行数据库调用。
$this->paginate('Vendor')
cakePHP模型函数几乎总是会阻止您编写自己的查询。一般来说,如果您认为必须撰写查询,那么您可能做错了。