如何在 Magento 2.3 中加入两个自定义表
Posted
技术标签:
【中文标题】如何在 Magento 2.3 中加入两个自定义表【英文标题】:How to join two custom table in Magento 2.3 【发布时间】:2021-07-01 01:12:37 【问题描述】:我有两张表如下 pscustom_catalog_product_entity
pscustom_catalog_product_entity_media
我已经使用资源模型和块为表 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。我尝试了很多解决方案,但它不起作用。 任何帮助将不胜感激。
谢谢。
【问题讨论】:
【参考方案1】:我认为您可以通过以下方式加入表格:
$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', '*');
这是连接集合中两个表的最简单方法
【讨论】:
以上是关于如何在 Magento 2.3 中加入两个自定义表的主要内容,如果未能解决你的问题,请参考以下文章