Skip to content

How to sort products in Magento by new from date?

I wanted to sort products by new from date , please see the query but
it is not working perfectly

$collection->getSelect()
        ->joinLeft(
           ['catalog_product_entity_datetime' => 'catalog_product_entity_datetime'],
           'e.entity_id = catalog_product_entity_datetime.entity_id AND catalog_product_entity_datetime.attribute_id = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = "news_from_date" LIMIT 1)',
           ['value' => 'catalog_product_entity_datetime.value']
       )
        ->group('e.entity_id')
        ->order('value','asc');

This is giving this query but it is not working

    SELECT `e`.*, `price_index`.`price`, `price_index`.`tax_class_id`, `price_index`.`final_price`, IF(price_index.tier_price IS NOT NULL, LEAST(price_index.min_price, price_index.tier_price), price_index.min_price) AS `minimal_price`, `price_index`.`min_price`, `price_index`.`max_price`, `price_index`.`tier_price`, IFNULL(review_summary.reviews_count, 0) AS `reviews_count`, IFNULL(review_summary.rating_summary, 0) AS `rating_summary`, `catalog_product_entity_datetime`.`value` FROM `catalog_product_entity` AS `e`
 INNER JOIN `catalog_product_index_price` AS `price_index` ON price_index.entity_id = e.entity_id AND price_index.customer_group_id = 0 AND price_index.website_id = '1'
 LEFT JOIN `review_entity_summary` AS `review_summary` ON e.entity_id = review_summary.entity_pk_value AND review_summary.store_id = 1 AND review_summary.entity_type = (SELECT `review_entity`.`entity_id` FROM `review_entity` WHERE (entity_code = 'product'))
 LEFT JOIN `catalog_product_entity_datetime` ON e.entity_id = catalog_product_entity_datetime.entity_id AND catalog_product_entity_datetime.attribute_id = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = "news_from_date" LIMIT 1) GROUP BY `e`.`entity_id` ORDER BY `value` ASC