在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
答案 0 :(得分:0)
不,您不需要用户模型,因为Course()
使用resultSet()
类。
在页面顶部添加此项 -
use Zend\Db\Sql\Select
$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
);
在课程模型中,添加public $name;
和public $mark;
(课程模型属性)。
只有mark
数组的resultSet
键才有值,否则它将为空。
其余的代码很好。
我希望它有所帮助。