如何在 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 中加入两个自定义表的主要内容,如果未能解决你的问题,请参考以下文章

在 WordPress 数据库查询中加入/求和自定义字段

自定义模块的自定义布局不会在 Magento 1.9 中加载

在 spring jparepository 中加入多个表

如何在 Nhibernate 中加入两个表

如何在 DynamoDb 中加入两个表?

如何在 App Script 中加入两个表并将数据提取到大查询现有表中