2016-08-03 3 views
1

私のクエリをzf2クエリに適合させることができません。単純な結合クエリに適合できますが、より複雑なサブクエリを書くことはできません。 これを手伝ってください。複雑なmysqlクエリをzf2に収める方法

SELECT `created_date` FROM `salesmodule_discussed_topic` dt WHERE dt.`meeting_id` IN( 
SELECT ma.`meeting_id` FROM `salesmodule_meeting_agent` ma WHERE ma.`agent_id`=30547 
) 



public function getLastmeetingdate() { 
     $select = new Select(); 
     $select->from(array('dt' => 'salesmodule_discussed_topic')); 
     $select->columns(array('created_date')); 
     $select->where(array('ma.`agent_id` => 30547)); 
     $resultSet = $this->tableGateway->selectWith($select); 
     return $resultSet->buffer(); 
    } 

答えて

-1
public function fetchAllSubQuery($id = '') { 
    $columns = array("*"); 
    $where = "main_booking_id IN (SELECT 
      b1.`main_booking_id` 
      FROM 
      `booking_sector` b1 
      WHERE b1.`connected_booking_id` = '$id' OR b1.`main_booking_id` = '$id') "; 
    $resultSet = $this->tableGateway->select(function (Select $select) use ($where,$columns) { 
      $select->where($where); 
      $select->columns($columns); 
     }); 
    $resultSet->buffer(); 
    // $resultSet->next(); 
    return $resultSet; 
} 
sql injections
+1

WHERE b1.connected_booking_id = '$ id'' MySql注入 – newage

2

を持っているので、前の例では悪いです。 Selectを使用してサブクエリを作成する必要があります。

public function getLastmeetingdate() { 
    $subQuery = new Select(); 
    $subQuery->from(array('ma' => 'salesmodule_meeting_agent')); 
    $subQuery->columns(array('meeting_id')); 
    $subQuery->where(array('ma.agent_id' => 30547)); 

    $select = new Select(); 
    $select->from(array('dt' => 'salesmodule_discussed_topic')); 
    $select->columns(array('created_date')); 
    $select->where->in('dt.meeting_id', $subQuery); 

    return $this->tableGateway->selectWith($select); 
}