PDO FETCH OBJECT MAPPING

时间:2011-02-22 14:18:56

标签: php mysql

我喜欢这个pdo fetch_object的例子: mysqli or PDO - what are the pros and cons?

如何将数据库cols映射到类构造函数? 我在表中有很多列,我只需要一些列来构造对象。

是否可以将对象直接序列化到数据库?或者我需要在对象类中实现一个方法?

感谢。

1 个答案:

答案 0 :(得分:2)

我不知道如何将它绑定到构造函数,但你可以使用魔术setter和getter。只需忽略您不想要的任何列。这适用于我(在PHP 5.3上测试,但应该适用于任何PHP 5)。

class MyClass
{
    // This will hold the data
    private $data = array();

    // A list of valid object properties
    private $valid_fields = array('foo', 'bar');

    // Magic setter. Silently ignore invalid fields
    public function __set($key, $value)
    {
        if (in_array($key, $this->valid_fields)) {
            $this->data[$key] = $value;
        }
    }

    // Magic getter
    public function __get($key)
    {
        if (isset($this->data[$key])) {
            return $this->data[$key];
        }
    }
}

$db = new PDO('sqlite::memory:');
$result = $db->query('SELECT 1 AS foo, 2 AS bar, 3 AS quu');
$result->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, 'MyClass');
var_dump($result->fetch());