2013-04-26 3 views
0

Zend_Db_Select를 사용하여 쿼리를 수행하려고합니다.Zend DB join이 모든 열을 선택합니다.

Array 
(
    [0] => invoice_date AS inv_invoice_date 
    [1] => invoice_id AS inv_invoice_id 
    [2] => name AS inv_name 
    [3] => ups_track AS inv_ups_track 
    [4] => shipping_pdf AS inv_shipping_pdf 
    [5] => invoice_pdf AS inv_invoice_pdf 
    [6] => alert AS inv_alert 
    [7] => invoice_date AS inv_invoice_date 
    [8] => invoice_id AS inv_invoice_id 
    [9] => name AS inv_name 
    [10] => subtotal AS inv_subtotal 
    [11] => tax_inclusive AS inv_tax_inclusive 
    [12] => total AS inv_total 
    [13] => shipping_pdf AS inv_shipping_pdf 
    [14] => invoice_pdf AS inv_invoice_pdf 
    [15] => alert AS inv_alert 
    [16] => rowid 
    [17] => partner_info.name AS shipper_name 
    [18] => partner_ship_methods.name AS shipping_method 
) 

결과 MYSQL 쿼리는 다음과 같습니다 :

SELECT `invoice`.`invoice_date` AS `inv_invoice_date`, `invoice`.`invoice_id` AS `inv_invoice_id`, `invoice`.`name` AS `inv_name`, `invoice`.`ups_track` AS `inv_ups_track`, `invoice`.`shipping_pdf` AS `inv_shipping_pdf`, `invoice`.`invoice_pdf` AS `inv_invoice_pdf`, `invoice`.`alert` AS `inv_alert`, `invoice`.`invoice_date` AS `inv_invoice_date`, `invoice`.`invoice_id` AS `inv_invoice_id`, `invoice`.`name` AS `inv_name`, `invoice`.`subtotal` AS `inv_subtotal`, `invoice`.`tax_inclusive` AS `inv_tax_inclusive`, `invoice`.`total` AS `inv_total`, `invoice`.`shipping_pdf` AS `inv_shipping_pdf`, `invoice`.`invoice_pdf` AS `inv_invoice_pdf`, `invoice`.`alert` AS `inv_alert`, `invoice`.`rowid`, `partner_info`.`name` AS `shipper_name`, `partner_ship_methods`.`name` AS `shipping_method`, `partner_info`.*, `partner_shipping`.* FROM `invoice` 
    INNER JOIN `partner_settings` ON partner_settings.clientid = '33' 
    INNER JOIN `partner_info` ON partner_info.rowid = partner_settings.partnerinfoid 
    INNER JOIN `partner_shipping` ON partner_shipping.partnersettingsid = partner_settings.rowid 
    INNER JOIN `partner_ship_methods` ON partner_ship_methods.rowid = partner_shipping.default_method_id WHERE (storeid IN ('43')) AND (partner_info.type = 'shipping') AND (partner_settings.toggle_value = 'on') ORDER BY `datetime_cre` DESC 

나의 가장 큰 문제는 SELECT 함께

$db = $this->db; 
    $select = $this->db->select(false) 
    ->from('invoice',$data1) 
    ->join('partner_settings', $db->quoteInto('partner_settings.clientid = ?', $clientid), array()) //'toggle_value')) 
    ->join('partner_info', $db->quoteInto('partner_info.rowid = partner_settings.partnerinfoid', array())) //'type', 'shipper_name' => 'partner_info.name'))) 
    ->join('partner_shipping', $db->quoteInto('partner_shipping.partnersettingsid = partner_settings.rowid', array())) //'default_method_id'))) 
    ->join('partner_ship_methods', $db->quoteInto('partner_ship_methods.rowid = partner_shipping.default_method_id'), array()) //'shipping_method' => 'name')) 
    ->where('storeid IN (?)',$inputid) 
    ->where('partner_info.type = ?', 'shipping') 
    ->where('partner_settings.toggle_value = ?', 'on') 
    ->order(array('datetime_cre DESC')); 

$의 데이터 1이 값을 포함하는 배열입니다 : 여기 내 코드입니다 * partner_info. *, partner_shipping. *이 테이블의 모든 열을 포함하고 싶지 않습니다. 빈 array()에 join() columns 인수를 설정했지만 도움이되지 않습니다.

누구든지이 문제의 해결책을 찾았습니까? 나는 헛된 탐색을 해왔다.

답변

1

columns 인수를 빈 배열로 설정하지 않은 경우 배열을 두 번째 인수로 quoteInto()에 전달합니다. 당신은이 :

->join('partner_info', $db->quoteInto('partner_info.rowid = partner_settings.partnerinfoid', array())) 

quoteInto() 그래서 당신은 아마 원하는 당신이 어떤 변수 전달되지 않기 때문에 어떤 목적으로 제공되지 :

->join('partner_info', 'partner_info.rowid = partner_settings.partnerinfoid', array()) 

그렇게 join() 첫 번째 매개 변수는 테이블 이름입니다, 두 번째는 조건이고, 세 번째는 열입니다.

+0

오른쪽에서 두 번입니다. 나는 프로그래밍 구문 오류가 싫어. 그 오류를 찾도록 도와 주셔서 감사합니다. –