插入..使用zend db从...中选择

时间:2009-10-16 16:58:56

标签: php zend-db

我有以下原始查询,它将商品从购物车移动到订单表:

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

我正在使用Zend DB进行所有建模。我想知道是否有办法实现上述查询的目标而不必使用原始查询?

2 个答案:

答案 0 :(得分:6)

还没有办法从zend db中的select中插入。但是,如果您只需要一个适配器的此功能,那么您可以使用类似于下面给出的方法:

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);
} 

答案 1 :(得分:2)

这对我来说很好用:我使用Zend_Db_Expr。根据需要消毒。

$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
        )")
    )
);