我有一个包含一些实例变量的类:
class MyClass
{
public $id;
public $name;
}
和一个mysql表,其中包含上述字段 +一些其他字段,例如updated_at。我尝试使用pdo实例化上述类的对象,并使用以下代码将它们转换为json数组:
$statement = $pdo->prepare('SELECT * FROM `mytable`');
$statement->execute();
$statement->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, 'MyClass');
$objects = $statement->fetchAll();
echo json_encode( (array) $objects );
现在看来,结果数组还包含其他字段,尽管它们不属于我的类定义:
[{"id": 5, "name":"a name", "updated_at":"<timestamp>", "created_at":"<timestamp>"}]
这怎么可能,最好的方法是避免这种情况? 提前谢谢。
答案 0 :(得分:0)
class MyClass
{
public $id;
public $name;
protected function setSelection() {
return implode(
',',
array_map(
function ($value) {
return '`'.$value.'`';
},
array_keys(get_object_vars($this))
)
);
}
public function getData() {
....
$statement = $pdo->prepare(
'SELECT ' . $this->setSelection() . ' FROM `mytable`'
);
....
}
}