Magento model

某个字段保存不了 entity/customer _getDefaultAttributes添加字段名

Java代码   收藏代码
  1. $customer = Mage::getModel('customer/customer')->load(1);      
  2. $customer->setData('is_charge''2');  
  3. $customer->save(); //is_charge保存不成功原因  

对某个字段进行算法操作或函数操作用new Zend_Db_Expr

Java代码   收藏代码
  1. array('point'=>new Zend_Db_Expr('pd.value*2'))  

model/customer/customer.php

Java代码   收藏代码
  1. Mage::getSingleton('customer/customer')->setWebsiteId(Mage::app()->getStore()->getWebsiteId())->loadByEmail('[email protected]');  

Model的启用,可以用Model下的文件 etc/config.xml

Java代码   收藏代码
  1.   
  2.       
  3.         <class>Test_Ticket_Modelclass>  
  4.         ticket_mysql4  
  5.       
  6.   

CURD操作:

Java代码   收藏代码
  1. public function createNewPostAction() {   
  2.     $blogpost = Mage::getModel('ticket/log');   
  3.     $blogpost->setTitle('Code Post!');   
  4.     $blogpost->setPost('This post was created from code!');   
  5.     $blogpost->save();   
  6.     echo 'post created';   
  7. }  
  8.   
  9. public function editFirstPostAction() {   
  10.     $blogpost = Mage::getModel('ticket/log');   
  11.     $blogpost->load(1); //load($id, $field=null)   $filed = '键值'  
  12.     $blogpost->setTitle("The First post!");   
  13.     $blogpost->save();   
  14.     echo 'post edited';   
  15. }  
  16.   
  17. public function deleteFirstPostAction() {   
  18.     $blogpost = Mage::getModel('ticket/log');   
  19.     $blogpost->load(1);   
  20.     $blogpost->delete();   
  21.     echo 'post removed';   
  22. }  
  23. //查询(select)语句  
  24. $connection = Mage::getSingleton('core/resource')->getConnection('core_read');  
  25. $select = "select * from table;"  
  26. //$select = $connection->select()->from('table', array('*')) ;  
  27. $rowsArray = $connection->fetchOne($select); // return row index0  
  28. $rowArray =$connection->fetchRow($select);   //return row  
  29.   
  30. //插入(insert)语句  
  31. $fields = array();  
  32. $fields['name']= 'test';  
  33. $connection->insert('tablename', $fields);  
  34.   
  35. //更新(update)语句  
  36. $connection->beginTransaction();  
  37. $fields = array();  
  38. $fields['name'] = 'jony';  
  39. $where = $connection->quoteInto('id =?''1');  
  40. $connection->update('tablename', $fields, $where);  
  41. $connection->commit();  
  42.   
  43. //删除(delete)语句  
  44. $condition = array($connection->quoteInto('id=?''1'));  
  45. $connection->delete('tablename', $condition);  

注意上面的getConnection()方法中的参数 "core_read",表明了Magento将要使用的资源。与之相对应,当我们修改数据库的时候使用参数"core_write".一般情况下 getConnection方法的参数应设成"core_read" 或 "core_write"(应该不指定也是可以的,但是如果Magento有多个数据库就必须指定了 )。对应上面新增的module的名字.使用下面相对应的语句在read或write Database:

Java代码   收藏代码
  1. $conn = Mage::getSingleton('core/resource')->getConnection('ticket_read');  
  2. $conn = Mage::getSingleton('core/resource')->getConnection('ticket_write');  

local\Test\Ticket\etc\config.xml  model添加资源模型和实体对象,可以用Model\Mysql4下的文件

Java代码   收藏代码
  1.   
  2.       
  3.           
  4.             <class>Test_Ticket_Modelclass>  
  5.             ticket_mysql4  
  6.           
  7.           
  8.             <class>Test_Ticket_Model_Mysql4class>  
  9.               
  10.                   
  11.                     ticket_log
      
  12.                   
  13.                   
  14.                     ticket_type
      
  15.                   
  16.                   
  17.                     ticket
      
  18.                   
  19.               
  20.           
  21.       
  22.      
  23.           
  24.               
  25.                 activity_setup    
  26.               
  27.           
  28.           
  29.               
  30.                 activity_setup  
  31.               
  32.           
  33.       
  34.   

app\etc\config.xml

Java代码   收藏代码
  1.   
  2. ****  
  3.       
  4.   
  5.       
  6.           
  7.             localhost  
  8.             root  
  9.             Test  
  10.             Test_activity  
  11.             mysql4  
  12.             SET NAMES utf8  
  13.             pdo_mysql  
  14.             1  
  15.           
  16.       
  17.   
  18.   
  19.       
  20.           
  21.               
  22.                 <class>Mage_Core_Model_Resource_Type_Db_Pdo_Mysqlclass>  
  23.               
  24.           
  25.       
  26.   

local\Test\Ticket\Model\Log.php

Java代码   收藏代码
  1. class Test_Ticket_Model_Log extends Mage_Core_Model_Abstract  
  2. {  
  3.     public function _construct()  
  4.     {  
  5.         parent::_construct();  
  6.         $this->_init('ticket/log');  
  7.     }  
  8.   
  9.     public function saveInfo($rewriteData)  
  10.     {  
  11.         return $this->getResource()->saveWeiboData($rewriteData);  
  12.     }  
  13.   
  14.     public function getLastRechargeReal($customerId, $rechargeType) //array  
  15.     {  
  16.         return $this->getResource()->getLastRechargeReal($customerId, $rechargeType);  
  17.     }  
  18.     public function getRecommendProducts()  //object  
  19.     {  
  20.         if (!$this->getId()) {  
  21.             return array();  
  22.         }  
  23.       
  24.         $array = $this->getData('recommend_products');  
  25.         if (is_null($array)) {  
  26.             $array = $this->getResource()->getRecommendProducts($this);  
  27.             $this->setData('recommend_products', $array);  
  28.         }  
  29.         return $array;  
  30.     }  
  31.     public function saveCardInfo($cardNo)  
  32.     {  
  33.         try {  
  34.             /*开始事务*/  
  35.             $this->getResource()->beginTransaction();  
  36.   
  37.             $customer = Mage::getSingleton('customer/session')->getCustomer();  
  38.             $oldcard = $customer->getData('idcard');  
  39.             #更新卡状态为绑定  
  40.             $idcard = $this->loadByCardno($cardNo);  
  41.             $idcard->setData('idcard_status', self::IDCARD_STATUS_BINDING);  
  42.             $idcard->save();  
  43.   
  44.             #更新用户的ID卡  
  45.             $customer->setData('idcard', $cardNo);  
  46.             $customer->save();  
  47.   
  48.             $this->getResource()->commit();  
  49.         } catch (exception $e) {  
  50.             $this->getResource()->rollBack();  
  51.         }  
  52.     }  
  53. }  

Mysql4  local\Test\Ticket\Model\Mysql4\Log.php

Java代码   收藏代码
  1. class Test_Ticket_Model_Mysql4_Log extends Mage_Core_Model_Mysql4_Abstract {  
  2.     public function _construct() {  
  3.         //$this->_setResource(array('read' =>'ticket_read', 'write' =>'ticket_write'));//多数据库  
  4.         $this->_init('ticket/log''id'); #主键  
  5.     }  
  6.   
  7.     public function getLastRechargeReal($customerId, $rechargeType) {  
  8.         $sql = $this->_getReadAdapter()->select()->from($this->getMainTable(), array('customer_id'))  
  9.             ->where('customer_id = ?', $customerId)  
  10.             ->where('recharge_type = ?', $rechargeType)  
  11.             ->order(array('id DESC'))  
  12.             ->limit(1);  
  13.   
  14.         return $this->_getReadAdapter()->fetchRow($sql);  
  15.     }  
  16.   
  17.     //联表查询  
  18.     public function getAttributesUsedInListing() {  
  19.         $sql = $this->_getReadAdapter()->select()  
  20.             ->from(array('main_table' => $this->getMainTable()))  
  21.             ->join(array('additional_table' => $this->getTable('catalog/eav_attribute')),  
  22.             'main_table.attribute_id = additional_table.attribute_id',  
  23.             array())  
  24.             ->joinLeft(array('al' => $this->getTable('eav/attribute_label')),  
  25.             'al.attribute_id = main_table.attribute_id AND al.store_id = ' . (int)$this->getStoreId(),  
  26.             array('store_label' => new Zend_Db_Expr('IFNULL(al.value, main_table.frontend_label)')))  
  27.             ->where('additional_table.used_in_product_listing=?'1);  
  28.   
  29.         // $sql = $sql->assemble();  
  30.         // echo $sql;  
  31.         return $this->_getReadAdapter()->fetchAll($sql);  
  32.     }  
  33.   
  34.     public function saveInfo($rewriteData) {  
  35.         $this->_getWriteAdapter()->insert($this->getMainTable(), $rewriteData);  
  36.         return $this->_getWriteAdapter()->lastInsertId();  
  37.     }  
  38.   
  39.     public function updateInfo($id, $rewriteData) {  
  40.         $this->_getWriteAdapter()->update($this->getMainTable(), $rewriteData, $this->_getWriteAdapter()->quoteInto($this->getIdFieldName() . '=?', $id));  
  41.     }  
  42.   
  43.     public function test() {  
  44.         $sql = 'update ' . $this->getMainTable() . " set a=1 where id=1";  
  45.         return $this->_getReadAdapter()->query($sql);  
  46.         //$this->beginTransaction();  
  47.  $this->_getWriteAdapter()->delete($this->getMainTable(), array("email='$email''""type='$type'"));  
  48.         //$this->_getWriteAdapter()->delete($this->getMainTable(), $this->_getWriteAdapter()->quoteInto($this->getIdFieldName().'=?', $id));  
  49.     }  
  50.   
  51.     public function count() {  
  52.         $table = $this->getMainTable();  
  53.         $select = $this->_getReadAdapter()  
  54.             ->select()  
  55.             ->from($table)  
  56.             ->reset('columns')  
  57.             ->columns(new Zend_Db_Expr('count(*)'));  
  58.         echo $select . '
    '
    ;  
  59.   
  60.         $select = $this->_getReadAdapter()  
  61.             ->select()  
  62.             ->from($table)  
  63.             ->reset('columns')  
  64.             ->columns(new Zend_Db_Expr('max(list_id)'));  
  65.         echo $select . '
    '
    ;  
  66.     }  
  67. }  

你可能感兴趣的:(Magento model)