.. .. Kullanan zend db seçmek takın

2 Cevap php

Ben bir sipariş tabloya bir alışveriş sepeti öğeleri taşır şu ham sorgu var:

insert into webshop_order_item (
    order_id,
    product_id,
    count
)
select
    1,
    product_id,
    count
from 
    webshop_cart

Ben bütün modelleme için Zend DB kullanıyorum. Ham sorgu kullanmak zorunda kalmadan Yukarıdaki sorgu hedefe ulaşmanın bir yolu olup olmadığını merak ediyorum?

2 Cevap

Henüz zend db seçkin gelen ekleme yolu yoktur. Yalnızca bir bağdaştırıcı için bu özelliği gerekiyorsa Ancak, daha sonra verilen aşağıda benzer yaklaşımı kullanabilirsiniz:

public function insertSelect($tableName, Zend_Db_Select $select, array
$fields = array()) {
    $fieldString = '';
    if (count($fields))
    {
        foreach($fields as $fieldKey => $field)
        {
            $fields[$fieldKey] =  $this->quoteIdentifier($field);
        }

        $fieldString = ' (' . implode(',', $fields) . ')';
    }

    $query  = "INSERT INTO ".$this->quoteIdentifier($tableName) .
$fieldString . " ";
    $query .= $select;

    $this->_db->query($query);
}

Bu benim için çalışıyor: Ben bir Zend_Db_Expre kullanın. Gerektiği gibi sterilize.

$this->db->insert("sa_article_attributes", array(
    "article_id" => $sid,
    "article_attribute_id" => new Zend_Db_Expr("(
        SELECT Attribute.id FROM sa_attributes Attribute
        WHERE Attribute.title = '{$category}'
        LIMIT 1
        )")
    )
);