I have a table "business". Each business has many businessPromos (a one-to-many relationship). A businessPromo has a createtime. How can I order a query for businesses by the createtime of the first businessPromo of each business? (I have the businessPromos for each business ordered by createtime DESC)
This works well for fetching and displaying the date of first businessPromo but you probably can’t order the result by stat relation.
It seems to be far from trivial but findAllBySql() may work (not tested):
$model->findAllBySql(
'SELECT * FROM business t1
LEFT JOIN (
SELECT t2.business_id, t2.createtime
FROM businessPromo t2
LEFT JOIN businessPromo t3
ON t2.business_id = t3.business_id AND t2.createtime > t3.createtime
WHERE t3.id IS NULL
) t4 ON t1.id = t4.business_id
ORDER BY t4.createtime'
);