pdo获取对象?

时间:2011-05-04 17:35:10

标签: php pdo

有没有更好的方法来返回db result的对象?

我知道“return $statement->fetchall(PDO::FETCH_CLASS, 'modelClassName');”但它只适用于fetchall函数吗?

class modelArea extends Model {

    public $areaID;
    public $postcode;

    public static function find($condition, $parameters) {
        $query = "SELECT * FROM area WHERE " . $condition;

        $statement = self::getDb()->prepare($query);
        if (!$statement->execute($parameters))
            return false;

        $query = $statement->fetch(PDO::FETCH_ASSOC);

        $a = new modelArea();

        $a->areaID = $query['areaID'];
        $a->postcode = $query['postcode'];

        return $a;
    }
}

2 个答案:

答案 0 :(得分:15)

PDOStatement::fetchObject方法可以满足您的需求。

您可以像以下一样使用它:

$a = $statement->fetchObject('modelArea');

这将导致$a成为类modelArea的对象,相当于您提供的代码。

答案 1 :(得分:1)

您可以创建modelArea类(或单独的工厂类)的静态方法并调用:

modelArea::createFromArray($query);

或甚至有一个返回modelArea个对象

的数组
modelArea::createFromStatement($stmt);