【问题标题】:customize a PDO Fetch mode自定义 PDO Fetch 模式
【发布时间】:2014-07-05 00:35:40
【问题描述】:

我有一个使用 setFetchMode(PDO::FETCH_CLASS, get_call_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 数组,而不是一个类实例数组。

【问题讨论】:

  • 我的目标是让我的框架能够在运行时创建表格和相应的地图,并且仍然能够使用它的工具!
  • 会向工厂添加一个公共 $map 并将 PDO 调用更改为 $sth->setFetchMode(PDO::FETCH_CLASS, get_call_class(), $this->map );解决这个问题?我现在要试试这个!但是在我真正测试之前,我有几个课程需要适应!欢迎任何提示!谢谢!

标签: pdo


【解决方案1】:

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

请发表评论!我不是 100% 确定这个解决方案!我相信这会奏效,但我也相信它一定是更好的方法!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    相关资源
    最近更新 更多