Zend Framework 2查询

时间:2014-08-04 09:24:41

标签: php sql zend-framework2

如何自定义我的查询..这是我在控制器中的当前代码:

class PostController extends AbstractActionController
{
    private $userTable;

    // CRUD
    // retrieve
    public function indexAction(){
        return new ViewModel(
                array(
                    'rowset'    => $this->getPostsTable()->select(),
                )
            );
    }
    public function getPostsTable(){
        if(!$this->userTable){
            $this->userTable = new TableGateway(
                    'posts',
                    $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter')
                );
        }

        return $this->userTable;
    }

}

如何命令结果下降?
以及如何使用该代码加入另一个表?

1 个答案:

答案 0 :(得分:0)

首先,Zend框架是一个MVC框架。

表示您的数据对象访问必须位于模型层NOT IN控制器中。

你的PostController里面没有模型逻辑,这很糟糕。它可能会引发很多错误,你不会直接理解。

另外,在Controller中调用getServiceLocator是一种不好的做法,它将在Zf3中删除。这就是推荐使用模型层的原因。

对于您的问题,您必须创建一个这样的查询构建器:

$sql = new \Zend\Db\Sql\Sql($this->getAdapter());

$select = $sql->select()
    ->from('tableName')
    ->columns(array())
    ->join('tableName2', 'Your ON Clause')
    ->where(array('if you Have WhereClause'))
    ->order('Your column DESC');

我使用Doctrine,但我很确定(社区会证实这一点与否)这个例子可能有效。