Magento2 将magento 1转换为magento 2

Magento2 将magento 1转换为magento 2,magento2,Magento2,我在magento 1中使用了fetch_assoc()方法。 我想把它转换成Magento 2。magento 2中没有fetch_assoc()方法 if(is_object($result)) { while ($resultsArray =$result->fetch_assoc()) { if(empty($data)) { $data[] = array_keys($resultsArray);

我在magento 1中使用了fetch_assoc()方法。 我想把它转换成Magento 2。magento 2中没有fetch_assoc()方法

if(is_object($result))
{   
    while ($resultsArray =$result->fetch_assoc())
    {
        if(empty($data))
        {
           $data[] = array_keys($resultsArray);
        }
        $data[] = $resultsArray;

    } var_dump($data);
}

我不确定我提出的解决方案是否对您有用,但在Magento 2中获取数据的最佳方法是基于
模型
集合

步骤1:首先,您必须在模块中创建一个
模型
文件

<?php
namespace <Vendor_Name>\<Module_Name>\Model;

use Magento\Framework\Model\AbstractModel;

class Data extends AbstractModel
{   
    protected function _construct()
    {
        $this->_init('<Vendor_Name>\<Module_Name>\Model\ResourceModel\Data');
    }
}
步骤3:创建
集合
文件以初始化
模型
资源模型
文件

namespace <Vendor_Name>\<Module_Name>\Model\ResourceModel\Data;


use Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection;


class Collection extends AbstractCollection
{
    protected function _construct()
    {
        $this->_init(
            '<Vendor_Name>\<Module_Name>\Model\Data',
            '<Vendor_Name>\<Module_Name>\Model\ResourceModel\Data'
        );
    }
}

另一个解决方案 如果您不想实现基于
模型
集合
的解决方案,也可以在Magento 2中使用
fetchAll
而不是
fetch_assoc()
,如下所示:

// Select Data from table
$sql = "Select * FROM " . $tableName;
$result = $connection->fetchAll($sql);

作为参考,您还可以查看magento 2中的Hi。您可以使用相同的工具,但需要创建数据库连接。 我建议您使用资源或集合模型来获得结果,如果您希望获得对象格式的第一行,那么应该使用
getFirstItem()

我认为我们可以使用如下内容:

    $adapter = $this->resourceConnection->getConnection($resource);        
    $stmt = $adapter->query($sql);

    // Use FETCH_NUM so we are not dependent on the CASE attribute of the PDO connection
    $results = $stmt->fetchAll(\Zend_Db::FETCH_ASSOC);
或者如果我们有$connection instanceof\Magento\Framework\DB\Adapter\AdapterInterface

    $connection->fetchAll($sql, $binds, \PDO::FETCH_ASSOC);
通过使用这些,我想你会得到与magento 1 fetch_assoc相同的结果

    $adapter = $this->resourceConnection->getConnection($resource);        
    $stmt = $adapter->query($sql);

    // Use FETCH_NUM so we are not dependent on the CASE attribute of the PDO connection
    $results = $stmt->fetchAll(\Zend_Db::FETCH_ASSOC);
    $connection->fetchAll($sql, $binds, \PDO::FETCH_ASSOC);