zf2 Zend Framework 2 paginator从多个表中选择列

时间:2013-06-11 15:37:43

标签: php zend-framework2

在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

1 个答案:

答案 0 :(得分:0)

  1. 不,您不需要用户模型,因为Course()使用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. 在课程模型中,添加public $name;public $mark;(课程模型属性)。
    只有mark数组的resultSet键才有值,否则它将为空。

  5. 其余的代码很好。

    我希望它有所帮助。