[英]How to join two custom table in Magento 2.3
我有兩個表,如下pscustom_catalog_product_entity
pscustom_catalog_product_entity_media
我已經使用資源 model 和塊為表pscustom_catalog_product_entity創建了集合。
現在我可以使用集合訪問這個表數據。
app/code/MyModule/Productsinfo/Model/Product.php
<?php
namespace MyModule\Productsinfo\Model;
use Magento\Framework\Model\AbstractModel;
use MyModule\Productsinfo\Model\ResourceModel\Product as ResourceModel;
class Product extends AbstractModel
{
protected function _construct()
{
$this->_init(ResourceModel::class);
}
}
app/code/MyModule/Productsinfo/Model/ResourceModel/Product.php
<?php
namespace MyModule\Productsinfo\Model\ResourceModel;
use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
class Product extends AbstractDb
{
protected function _construct()
{
$this->_init('pscustom_catalog_product_entity', 'entity_id');
}
}
app/code/MyModule/Productsinfo/Model/ResourceModel/Product/Collection.php
<?php
namespace MyModule\Productsinfo\Model\ResourceModel\Product;
use Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection;
use MyModule\Productsinfo\Model\Product as Model;
use MyModule\Productsinfo\Model\ResourceModel\Product as ResourceModel;
class Collection extends AbstractCollection
{
protected function _construct()
{
$this->_init(Model::class, ResourceModel::class);
}
}
app/code/MyModule/Productsinfo/Block/Product.php
<?php
namespace MyModule\Productsinfo\Block;
use Magento\Framework\View\Element\Template;
use MyModule\Productsinfo\Model\ResourceModel\Product\Collection;
class Product extends Template
{
/**
* @var Collection
*/
private $collection;
/**
* Hello constructor.
* @param Template\Context $context
* @param Collection $collection
* @param array $data
*/
public function __construct(
Template\Context $context,
Collection $collection,
array $data = []
)
{
parent::__construct($context, $data);
$this->collection = $collection;
}
public function getAllProducts() {
return $this->collection;
}
我可以使用getAllProducts()方法獲取產品集合。 現在我想將表pscustom_catalog_product_entity集合加入表pscustom_catalog_product_entity_media 。 我嘗試了很多解決方案,但它不起作用。 任何幫助,將不勝感激。
謝謝。
我認為您可以通過以下方式加入表格:
$this->getSelect()->join(
['secondTable'=>$this->getTable('pscustom_catalog_product_entity')],
'main_table.id = secondTable.entity_id','*');
$this->getSelect()->join(
['thirdTable'=>$this->getTable('pscustom_catalog_product_entity_media')],
'main_table.id = thirdTable.entity_id', '*');
}
這是在集合中加入兩個表的最簡單方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.