CakePHP中一个模型的多个数据源

时间:2015-02-21 04:57:26

标签: cakephp cakephp-2.0 cakephp-2.1 cakephp-2.3

我对CakePHP有一个非常有趣的问题。我有一个客户目前在eBay上销售产品,并希望开始在自己的网站上销售产品。那么,将有两个独立的销售途径:(1)eBay,以及(2)网站。

但是,他们确实希望为客户提供无缝的网站体验。基本上,他们希望他们当前的eBay网站是他们当前网站的类别,他们当前的eBay拍卖项目可以在他们的网站上搜索。

一个简单的CakePHP网站将有两个表:产品和类别,简单的表关系为"产品属于类别"和"类别有很多产品"。我如何添加eBay类别和产品?基本上,我希望http://site/products/index返回产品表和eBay上的所有产品列表。我希望http://site/categories/index返回类别表中所有已定义类别的列表,以及在易趣上列出的类别项目。

eBay有一个非常好的实时请求查询API,所以我一直在考虑这样做的选项,但我想知道是否有更好的方法......我不知道认为这个选项适用于PaginatorComponent ......

方法: (1)在beforeFind中,捕获请求参数并保存到持久变量 (2)在afterFind中,根据请求参数向eBay API发出请求,然后手动将结果添加到$ results数组。

同样,我认为这适用于基本的查找操作,但我不确定这是否适用于分页,因为我不确定如何处理,例如,20项页面限制(即当第1页上只有18个来自数据库的项目时,如何处理第2页,现在第2页我需要从数据库中的19开始而不是21开始?)

是否有我在这里忽略的CakePHP语法,或者我是否只是开始编写所有这些可能性的编码?

我在CakePHP 2.6.0平台上编码。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

一种可能的方法是从每个数据源中读取所有产品,在内存中对它们进行排序并从那里进行分页。产品数量当然会在这里发挥重要作用。

第二个,如果产品数量不经常变化,将涉及后台流程从eBay检索其ID和最重要的数据,并将其写入公共Product表,标记创建的行。 然后Paginator可以显示您的结果,但是在撰写页面时,可以从eBay中即时检索标记产品的其他快速变化数据。