Magento2 将magento 1转换为magento 2
我在magento 1中使用了fetch_assoc()方法。 我想把它转换成Magento 2。magento 2中没有fetch_assoc()方法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);
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);