为查询结果创建单个对象

时间:2012-11-24 13:29:49

标签: php oop

我有三个模型(表示数据库表),它们基本上有setter和getter方法。我有一个具有动作方法的服务类。在其中一个服务类方法中,我正在编写一个连接两个表的查询。我想知道如何为查询结果创建单个对象。

例如:

我有两个模型文件m1.php和m2.php

m1.php

class M1Model {
  public $id;
  public $name;

  public function setM1ID($id) {
    $this->id = $id;
  }

  public function setM1Name($name) {
    $this->name = $name;
  }

  public function getM1ID() {
    return $this->id;
  }

  public function getM1Name() {
    $this->name;
  }
}

m2.php

class M2Model {

  public $id;
  public $cat_name;
  public $m1_id;

  public function setM2ID($id) {
    $this->id = $id;
  }

  public function setM2CatName($cat_name) {
    $this->cat_name = $cat_name;
  }

  public function setM1ID($m1_id) {
    $this->m1_id = $m1_id;
  }

  public function getM2ID() {
    return $this->id;
  }

  public function getM2CatName() {
    return $this->cat_name;
  }

  public function getM1ID() {
    return $this->m1_id;
  }
}

service.php

include m1.php;
include m2.php;

class DataService {

  function __construct() {
    $m1 = new M1Model();
    $m2 = new M2Model();
  }

  function getAllData() {
    $query = "database query using join";
    //Here I want to return object (Not generic object)
    return $object;
  }
}

从getAllData(),我想返回单个对象和非泛型对象。我该怎么做?

2 个答案:

答案 0 :(得分:0)

使用PDOStatement::fetch(PDO::FETCH_OBJ)mysqli_fetch_object()获取查询结果。

请参阅PHP文档:

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetch(PDO::FETCH_OBJ);
print $result->NAME;

答案 1 :(得分:0)

如果你想要的是一个DataService对象,你可以把你的$查询放在DataService构造函数中......