使用OOP Php获取所有结果

时间:2015-03-11 12:49:24

标签: php oop

我一直在youtube上关注oop php的教程。他提出了一种方法来只获取查询的第一个结果。我试图获取所有结果,但我收到一条警告消息:试图获取非对象的属性

当我var_dump();我的对象持有结果(我假设)时,它返回null

我做错了什么?

这是完整的代码:

数据库类:

class DB {

     private $_results;

     public function query($sql, $params = array()) {

        $this->_error = false;

        if ($this->_query = $this->_pdo->prepare($sql)) {

            $x = 1;

            if (count($params)) {

                foreach ($params as $param) {

                    $this->_query->bindValue($x, $param);

                    $x++;

                }

            }

            if ($this->_query->execute()) {

                $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
                $this->_count = $this->_query->rowCount();

            } else {

                $this->_error = true;

            }

        }

        return $this;

    }

     // First result only:

     public function first() {

          return $this->results()[0];

     }

     // All results as I thought:

     public function first() {

          return $this->results();

     }

     public function results() {

          return $this->_results;

     }

}

项目类:

class Project {

    private $_db,
            $_data;

    public function __construct() {

        $this->_db = DB::getInstance();

    }

    public function find($user = null) {

        if ($user) {

            $data = $this->_db->get('user_project', array('uid', '=', $user));

            if ($data->count()) {

                $this->_data = $data->all();

                return $this->data()->id;

            }

        }

    }

    public function data() {

        return $this->_data;

    }

}

我尝试通过这样做来访问它:

$project = new Project();

var_dump($project->find($user->data()->id)); // $user->data()->id is just the id of a user

1 个答案:

答案 0 :(得分:0)

感谢你指出了正确的方向,我已经明白了。

 $this->_data = $data->results();

 return $this->_data;

然后我不得不循环它。解决。

相关问题