Zf2 - 使用join查询

时间:2014-08-06 20:41:08

标签: zend-framework2

我尝试加入。 但是我不能选择返回的列。

public function getDonneesProjet($idProjet)
{
    $idProjet  = (int) $idProjet;
    return $this->tableGateway->select(function(Select $select) use ($idProjet) {
            $select ->join('rapport', 'rapport.id = donnee_factuelle.rapport_id', array('date'))                    
                    ->where("projet_id = $idProjet");
    })->toArray();
}

我的表格中的所有列都是“donnee_factuelle”。 但我不知道如何检索表格“rapport”的“日期”列。

一个想法?

由于

2 个答案:

答案 0 :(得分:0)

请参阅下面的代码段:

public function fetchAll() {
        $select = $this->tableGateway->getSql()->select()
            ->join('join_table', 'gateway_table.id=join_table.link_id', array ('viewfieldname' => 'joinfieldname'));

        $resultSet = $this->tableGateway->selectWith ( $select );

        return $resultSet;
    } 

答案 1 :(得分:0)

对您的查询进行这些更改 - (删除->toArray()

public function getDonneesProjet($idProjet)
{
    $idProjet  = (int) $idProjet;
    return $this->tableGateway->select(function(Select $select) use ($idProjet) {
            $select ->join('rapport', 'rapport.id = donnee_factuelle.rapport_id', array('date'))                    
                    ->where("projet_id = $idProjet");
    });  //->toArray() is removed.
}

由于这是tablegateway,您需要在Primary(Main)Model文件中添加date表的属性(rapport)。

例如:

class MODEL_NAME {

    //other properties

    public $date;

    public function exchangeArray($data) {

        //other properties

        $this->date = (!empty($data['date'])) ? $data['date'] : null;
    }

}

只有这样你才能获得对象中的date属性及其值。

我希望它有所帮助。