自定义 PDO Fetch 模式

问题描述 投票:0回答:1

我有一个使用 setFetchMode(PDO::FETCH_CLASS, get_used_class() ) 的 PDO 类,

但现在我正在开发一个类“工厂”,它映射通过构造函数传递的表,因此,我没有将表字段作为映射要获取的表的类的成员,而是有一个字段数组匹配!

到目前为止一切顺利!我想!

但是我需要调整我的 PDO 类,并且我不知道如何告诉它映射到关联数组而不是类成员!

有人可以给我提示吗?

在我的班级工厂中,我有以下内容:

class factory extends Database
{

public $fields = array();
public $fieldnames  = array();
public $fieldvalues = array();

// Nomes das colunas com datas de criação e alteração do registo
static protected $insert_timestamp = 'datacriado';
static protected $update_timestamp = 'dataalterado';

// Array com defaults que são aplicados ao objecto antes de gravação na BD
static protected $defaults = array();

// Nome da tabela na base de dados
public $TABLENAME = "";

/*********************************************************************
/   Construtor.
*********************************************************************/
public function __construct($map)
{
    parent::__construct();

    $fp=fopen($map,"r");
    $map=fgets($fp);
    fclose($fp);
    $mapArr=explode(":",$map);
    $this->TABLENAME=$mapArr[0];
    $map=$map[1];
    $mapArr=explode(";",$map);
    foreach($mapArr as $v)
    {
        array_push($fieldnames,$v);
        array_push($fieldvalues,":".$v);
        array_push($fields[$v],'');
    }



    // definir DEFAULTS se houver

}

}

我希望 PDO 给我一个 $fields 数组,而不是一个类实例数组。

php pdo
1个回答
0
投票

我想我抓住了解决方案,使用 setFetchMode(PDO::FETCH_ASSOC) 并创建一个函数通过 $this-map 解析结果并返回解析的结果而不是 PDO 结果本身!

请评论!我对这个解决方案不是 100% 确定!我相信这会起作用,但我也相信这一定是更好的方法!

© www.soinside.com 2019 - 2024. All rights reserved.