我有以下原始查询,它将商品从购物车移动到订单表:
insert into webshop_order_item (
order_id,
product_id,
count
)
select
1,
product_id,
count
from
webshop_cart
我正在使用Zend DB进行所有建模。我想知道是否有办法实现上述查询的目标而不必使用原始查询?
答案 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
)")
)
);