How to Join 2 Tables in Magento 2
Joining 2 tables is the usual operation you need to implement when working with Magento 2 project.
Joining 2 tables in Magento 2 is the usual operation you need to implement when working with Magento 2 project. In order to make you do that with ease, the developer team from Mageplaza recommend the topic Join Data Between 2 Tables in Magento 2. In this topic, I will guide you how to get all orders that created with a specify payment method such as “Check Money Order”.
Overview of joining data between 2 tables in Magento 2
- Step 1: Set a Collection class that extends
- Step 2: Set your own function to get data
- Step 3: Get the collection and call to filterOrder function above
- Step 4: Save
Step 1: Set a Collection class
In the first step, you will form the Collection class that extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
In the Collection class, there are two parameters you need to understand:
- The first is your module name
- The second is Sale order resource model from Magento sales module
protected function _construct()
{
$this->_init('Mageplaza\HelloWorld\Model\YourModel', 'Magento\Sales\Model\ResourceModel\Order');
}
Step 2: Set your own function to get data
Use the code script to set the own function, then get data as need.
protected function filterOrder($payment_method)
{
$this->sales_order_table = "main_table";
$this->sales_order_payment_table = $this->getTable("sales_order_payment");
$this->getSelect()
->join(array('payment' =>$this->sales_order_payment_table), $this->sales_order_table . '.entity_id= payment.parent_id',
array('payment_method' => 'payment.method',
'order_id' => $this->sales_order_table.'.entity_id'
)
);
$this->getSelect()->where("payment_method=".$payment_method);
}
Step 3: Get the collection and call to filterOrder function above
In your model, you just need to get the collection and call to filterOrder
function above.
$collection = $this->YourCollectionFactory->create();
$collection->filterOrder("checkmo");
foreach ($collection as $item) {
//do what you want with the data here.
}
Step 4: Save
Finally, Save all to complete with the joining data between 2 tables in Magento 2.
That’s all for you. Thanks for your reading!
Enjoyed the tutorial? Spread it to your friends!

Sam Thomas
CEO and Founder of Mageplaza. Pursueing a simple and healthy lifestyle. A friend, a husband and a dad of two children, a trainer and an influencer wannabe. He is a big fan of sports and travel, also.
Featured Extensions








People also searched for
- magento 2 data between 2 tables
- How to Join 2 Tables Magento 2
- inner join 2 tables mysql magento 2
- left join 2 tables mysql magento 2
- how to join 2 tables without common fields magento 2
- joining 2 tables oracle magento 2
- joining 2 tables on sql magento 2
- join 2 tables on different servers magento 2
- joining 2 fact tables obiee magento 2
- sql join 2 tables on 1 field magento 2
- 2.2.x, 2.3.x, 2.4.x