Cakephp - 从不相关的模型中获取数据库数据

Cakephp - get database data from not associated models

我想问一下,如何从一个 table 中获取数据并在其他查找中使用它。

例如,我有电影table。 我想获得最高评价的 3 部电影。结果应该 return 3 个 ID。

现在,我想从未关联的 table 创建其他查询,并将这 3 个 ID 作为 "conditions" 传递以在其他 table.

中查找数据

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

谢谢。

获得电影 ID 后,您可以使用 in 过滤来自其他 Model 的结果:-

$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')

查看 advanced conditions 上的文档部分。

如果您需要将电影 ID 转换为正确的格式(,即示例代码中显示的 ),您可以对之前的结果使用 Hash::extract()查询。

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

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

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

在任何可以使用查询表达式的地方都接受子查询。例如,在 select() 和 join() 方法中。 http://book.cakephp.org/3.0/en/orm/query-builder.html#subqueries