MySQL Query to Model, Resource Model, Collection in Magento 2 – Guide

collection;magento2modelresource-model

I can easily get or set value using ORM. I felt difficult to convert mysql query logic to Model, Resource Model, Collection(ORM).

for example I am getting last one hour data using the below query

select * from chennai_cancel_order where cancel_date >= DATE_SUB(NOW(),INTERVAL 1 HOUR)

but I don't have idea about how to apply above logic to ORM.

Similarly more way of query is possible like order by, descending, limit….. etc.

please give some clarity about how to handle Mysql query in ORM.

Best Answer

Magento 2 still can work with Zend_Db_Expr for arbitrary SQL expressions in filters. Given a collection, use addFilter for the where condition:

$chennaiCancelOrderCollection->addFilter(
    'cancel_date',
    ['gt' => new \Zend_Db_Expr('DATE_SUB(NOW(),INTERVAL 1 HOUR)']);