Так как элементы находятся в разных таблицах, в любом случае трудно извлечь их, отсортированные вместе из базы данных.В зависимости от того, насколько хорошо организованы ваши данные, может быть что-то более беспорядочное:
$posts = $this->Post->find(...);
$reviews = $this->Review->find(...);
$comments = $this->Comment->find(...);
$feed = array_merge($posts, $reviews, $comments);
usort($feed, function ($a, $b) {
$a = current($a);
$b = current($b);
return $strtotime($a['created']) - strtotime($b['created']);
});