4

アイテムをショッピング カートから注文テーブルに移動する次の生のクエリがあります。

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

すべてのモデリングに Zend DB を使用しています。生のクエリを使用せずに上記のクエリの目標を達成する方法があるかどうか疑問に思っていましたか?

4

2 に答える 2

6

zend db に from select を挿入する方法はまだありません。ただし、この機能が 1 つのアダプターにのみ必要な場合は、以下のようなアプローチを使用できます。

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);
} 
于 2009-11-13T14:12:38.443 に答える
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
        )")
    )
);
于 2013-03-07T19:59:17.320 に答える