我正在做一个照片库项目。我想列出最近创建的 20 个相册,并显示每个相册最近上传的照片(如果有的话)。我现在这样做的方式是查询相册 ( $this->Album->find('all', ...)
),然后将这些结果中的 ID 传递到我的第二个查询中,该查询为第一个查询找到的 20 个相册找到最近上传的照片。
这是实际查询的样子:
SELECT `Album`.`id`, `Album`.`name`, `Album`.`photo_count` FROM `mydb`.`albums` AS `Album` WHERE 1 = 1 ORDER BY `Album`.`created` DESC LIMIT 20
SELECT `Photo`.`album_id`, `Photo`.`name` FROM `mydb`.`photos` AS `Photo` WHERE `Photo`.`album_id` IN (21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2) GROUP BY `Photo`.`album_id` ORDER BY `Photo`.`created` DESC
我不喜欢做两个查询,第二个查询看起来效率很低。有没有办法让 CakePHP 在一个高效的查询中做到这一点?