Is there a way to do an “INSERT…ON DUPLICATE KEY UPDATE” in Zend Framework 1.5?

后端 未结 7 1459
独厮守ぢ
独厮守ぢ 2021-01-31 02:25

I would like to use ON DUPLICATE KEY UPDATE in Zend Framework 1.5, is this possible?

Example

INSERT INTO sometable (...)
VALUES (...)
ON DUP         


        
7条回答
  •  甜味超标
    2021-01-31 02:56

    $arrayData = array('column1' => value1, 'column2' => value2, ...)
    
    class Model_Db_Abstract extends Zend_Db_Table_Abstract
    {
        protected $_name;
        protected $_primaryKey;
    
        public function insertOrUpdate($arrayData)
        {
            $query = 'INSERT INTO `'. $this->_name.'` ('.implode(',',array_keys($arrayData)).') VALUES ('.implode(',',array_fill(1, count($arrayData), '?')).') ON DUPLICATE KEY UPDATE '.implode(' = ?,',array_keys($arrayData)).' = ?';
            return $this->getAdapter()->query($query,array_merge(array_values($arrayData),array_values($arrayData)));
        }
    
    }
    

    USAGE:

    eg. Model_Db_Contractors.php

    class Model_Db_Contractors extends Model_Db_Abstract 
    {
    
        protected $_name = 'contractors';
        protected $_primaryKey = 'contractor_id';
    
        ...
    }
    

    IndexController.php

    class IndexController extends Zend_Controller_Action
    {
     public function saveAction()
     {
      $contractorModel = new Model_Db_Contractors();
      $aPost = $this->getRequest()->getPost();
    
      /* some filtering, checking, etc */
    
      $contractorModel->insertOrUpdate($aPost);
     }
    }
    

提交回复
热议问题