CakePHP2从数据源获取关联模型

CakePHP2从数据源获取关联模型,cakephp,model,datasource,cakephp-2.1,rotten-tomatoes,Cakephp,Model,Datasource,Cakephp 2.1,Rotten Tomatoes,我有一个用户模型,它使用标准的MySQL数据库和用户表,还有一个电影模型,它是来自烂番茄的数据源。它们有一个hasandbelongtomany关系,并且我能够成功地写入连接表users\u movies,该表包含用户id和movie\u id(movie\u id是烂番茄id)。效果很好 问题在于检索用户的电影。该标准发现: $movies = $this->User->find('all', array('conditions' => array('id' => $u

我有一个用户模型,它使用标准的MySQL数据库和用户表,还有一个电影模型,它是来自烂番茄的数据源。它们有一个hasandbelongtomany关系,并且我能够成功地写入连接表users\u movies,该表包含用户id和movie\u id(movie\u id是烂番茄id)。效果很好

问题在于检索用户的电影。该标准发现:

$movies = $this->User->find('all', array('conditions' => array('id' => $user_id)));

仅返回用户,不返回关联的电影。我在数据源的read方法中放了一个die语句,但它甚至没有到达read方法。我怎样才能检索用户的电影呢?

这么说烂西红柿放着你的电影?在这种情况下,腐烂的西红柿当然不允许SQL直接访问它们的数据库——您将通过API访问它。因此,Cake肯定不会像在同一个数据库中使用两个表那样,将用户加入到电影中

你需要做的是1)从Cake中获取用户的电影id列表,然后2)调用Rotter Tomatos API获取电影列表,其中用户id在你的电影id列表中。(这是假设烂番茄允许这样的API调用。)

快速查看一下API,他们的“电影搜索”(movies search)似乎只允许您指定纯文本作为搜索条件(即,您不能基于电影id进行搜索)。他们的“电影信息”方法()允许您通过id检索电影,但一次只能检索一部电影

当然,您可以循环查看给定用户的电影id列表,并为每个用户分别调用一个API调用烂番茄,尽管我认为这会变得非常缓慢


有人提出了一个基于多个id列表()的检索功能请求,但在该请求实现之前,您可能很难获得任何正常的工作

我通过在用户和电影之间的连接表中创建一个模型,并通过这种方式获取用户的电影,从而实现了这一功能。然后我按照你的建议做了,通过用户的电影ID循环调用API并获取每一部电影。不知道它有多优雅,但它正在工作