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
我想问一下,如何从一个 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