0

在 zend 框架 2 中,我想从两个表中检索列名称和结果。

在 SQL 中我可以写

Select user.name, course.mark from course JOIN user.id=course.user_id;

这将返回用户名和他们的标记

但是在 ZF2 中,当我想使用 Zend\Db\Sql\Select 获得这样的结果时;不会工作。我正在使用 Zend\Db\Sql\Select,因为正在使用分页。

 zf2 User Model


    public function fetchAll($pagination = FALSE)
{
    if($pagination)
    {
        // create a new Select object for the table album
        $sql = new Sql($this->tableGateway->getAdapter());
        $select = $sql->select();
        $select->from('course');
        $select->join('user', 'user.id = course.user_id',
                array('user.name','course.mark')
        );
        // create a new result set based on the Album entity

        $resultSetPrototype = new ResultSet();
        $resultSetPrototype->setArrayObjectPrototype(new Course());
        // create a new pagination adapter object
        $paginatorAdapter = new DbSelect(
                // our configured select object
                $select,
                // the adapter to run it against
                $this->tableGateway->getAdapter(),
                // the result set to hydrate
                $resultSetPrototype
        );
        $paginator = new Paginator($paginatorAdapter);
        return $paginator;
    }
    $resultSet = $this->tableGateway->select();
    return $resultSet;
}

我还应该创建一个用户模型吗?目前,我只有 CourseTable

4

1 回答 1

0
  1. 不,您不需要用户模型,因为您将Course()Class 用于resultSet().

  2. 在页面顶部添加这个 - use Zend\Db\Sql\Select

  3. $select = new Select('course');   //'course' is set as the primary table
    $select->columns(array('mark'));   //This is for getting 'course.mark' column
    $select->join(
            'user',
            'user.id = course.user_id',
            array('name')              //This is for getting 'user.name' column
    );
    
  4. 在 Course Model 中,添加public $name;with public $mark;(Course Model attributes )。
    只有这样mark,数组的键resultSet才会有值,否则它将为空。

其余的代码都很好。

我希望它可以帮助某人。

于 2014-05-02T06:33:06.247 回答