0
我正在開發一個照片庫項目。我想列出最近創建的20張專輯,並顯示這些專輯最近上傳的照片(如果有)。我現在的做法是查詢相冊($this->Album->find('all', ...)
),然後將這些結果中的ID傳遞到我的第二個查詢中,該查詢是查找第一個查詢找到的20個相冊中最近上傳的照片的查詢。將兩個查詢合併爲一個CakePHP
這是實際的查詢是什麼樣子:
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在一個高效的查詢中執行此操作?
該查詢正在提取正確的相冊,但它們似乎以隨機順序列出,而不像您在子查詢中那樣使用「Created DESC」。此外,被拉的照片似乎是最古老的,而不是最新的。不過,我絕對感謝你的努力! – Nick
@Nick - 我更新了答案將a.created添加到主查詢的order by子句中。祝你好運! – sgeddes
謝謝,這是固定部分的問題!不過,這張照片仍然存在問題。 – Nick