Cakephp-从非关联模型获取数据库数据

Cakephp-从非关联模型获取数据库数据,php,cakephp,cakephp-3.0,Php,Cakephp,Cakephp 3.0,我想问的是,如何从一个表中获取数据并在另一个表中使用它 例如,我有一张桌子。 我想得到最高评级的3部电影。结果应返回3个ID 现在,我想从未关联的表中创建另一个查询,并将这3个ID作为“条件”传递给其他表中的数据 我不想使用关联,因为数据存储在许多数据库中,这是有问题的 谢谢。一旦您获得了电影ID,您就可以使用中的来过滤其他型号的结果:- $filmIds = ['32','55','75']; $query = TableRegistry::get('Model')->find()

我想问的是,如何从一个表中获取数据并在另一个表中使用它

例如,我有一张桌子。 我想得到最高评级的3部电影。结果应返回3个ID

现在,我想从未关联的表中创建另一个查询,并将这3个ID作为“条件”传递给其他表中的数据

我不想使用关联,因为数据存储在许多数据库中,这是有问题的


谢谢。

一旦您获得了电影ID,您就可以使用中的来过滤其他
型号
的结果:-

$filmIds = ['32','55','75'];

$query = TableRegistry::get('Model')->find()
    ->where(function ($exp, $q) use ($filmIds) {
        return $exp->in('film_id', $filmIds);
    });
// WHERE film_id IN ('32','55','75')
查看上的文档部分


如果您需要将电影ID转换为正确的格式(即示例代码中所示的格式),您可以在上一次查询的结果上使用。

如果您的cakephp版本为3.x,您可以以相当直观的方式使用子查询

$films = TableRegistry::get('Films')->find('highestRated')
->select(['id'])
->limlt(3);

$query = $related->find()
->where(['id' => $films]);

任何可以使用查询表达式的地方都可以接受子查询。例如,在select()和join()方法中

您使用的是哪个版本?您的意思是要在不同的模型中使用不同的表?是的。如果第一个结果返回数组('32','55','75),我如何使用此数据过滤其他查找()的结果?或者,我如何将id数组传递给其他查找的条件?@user2610146抱歉,忘记将
$filmIds
传递给闭包。我已经更新了答案。不要说对不起:)每一个帮助都是有帮助的,谢谢。你给了我一个提示,我这样做:->where(['id IN'=>$filmid])致以最诚挚的问候。