来自文档fetchAll和FETCH_CLASS:
<?php
class fruit {
public $name;
public $colour;
}
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_CLASS, "fruit");
var_dump($result);
?>
通常会发生列名与类中定义的字段不同。我想知道当查询获取不同的列名称时是否有一些干净的方法来填充类的字段:
$sth = $dbh->prepare("SELECT f_name, f_colour FROM fruit");
是否有将列名称映射到fiels的通用解决方案?我为FETCH_MODE尝试了几种组合,希望其中一种组合将结果传递给构造函数,但它们都不起作用。
答案 0 :(得分:2)
通常会发生列名与类中定义的字段不同。
它不应该首先发生。这种获取模式的目的是在列名被认为与类属性匹配时使属性赋值变得简单。因此,程序员一直使用相同的命名 - 对于SQL表列名,HTML表单输入字段名以及相应的类属性。这将是真实的通用解决方案。
但是,如果你想要它,有2个解决方案,基于SQL,通过在查询中使用别名,以及基于OOP,你可以使用魔术__set()
方法,你可以在其中实现任何重命名逻辑你愿望。