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

时间:2015-06-25 11:28:15

标签: php cakephp cakephp-3.0

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

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

现在,我想从非关联表创建其他查询,并将此3个ID作为"条件"在其他表中查找数据。

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

谢谢。

2 个答案:

答案 0 :(得分:2)

获得电影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()

答案 1 :(得分:1)

如果你的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