加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 有人可以解释这段magento代码吗?

发布时间:2020-12-13 21:44:19 所属栏目:PHP教程 来源:网络整理
导读:有人可以解释一下在Mage_Sales_Model_Mysql4_Quote类中的loadByCustomerId()中找到的magento代码片段. $read = $this-_getReadAdapter();$select = $this-_getLoadSelect('customer_id',$customerId,$quote) -where('is_active=1') -order('updated_at desc'
有人可以解释一下在Mage_Sales_Model_Mysql4_Quote类中的loadByCustomerId()中找到的magento代码片段.

$read = $this->_getReadAdapter();
$select = $this->_getLoadSelect('customer_id',$customerId,$quote)
                ->where('is_active=1')
                ->order('updated_at desc')
                ->limit(1);
$data = $read->fetchRow($select);

当我var_dump($data)时,我看到它是一组客户数据.什么是与此$data数组关联的模型?谢谢.

解决方法

Magento“模型”(意味着允许您与数据库交互的实体,而不是通用服务器/域模型)有两层.第一个是“模型”层.这包含与模型进行逻辑交互的方法. (给我一个客户的地址,下订单等).第二层是“资源模型”层.资源模型处理与数据库(或更一般地,数据存储或持久层等)的任何交互.

资源模型与数据库交互的方式是通过适配器对象.一个用于读取信息,另一个用于写入信息.

所以,你在Mage_Sales_Model_Mysql4_Quote类中.这是一个资源模型.它是Mage_Sales_Model_Quote对象的后端,实例化为

$model = Mage::getModel('sales/quote');

有了这条线

$read = $this->_getReadAdapter();

你得到了模型的读取适配器的引用.这将允许您对数据库进行查询.

有了这条线

$select = $this->_getLoadSelect('customer_id',$quote)
                ->where('is_active=1')
                ->order('updated_at desc')
                ->limit(1);

您将获得对此资源模型将用于加载销售/报价对象的SQL语句(也是对象)的引用.

//gets a reference
$this->_getLoadSelect('customer_id',$quote)

然后,您正在调用该对象上的方法以使用其他逻辑来更改它

->where('is_active=1')
->order('updated_at desc')
->limit(1);

在伪sql中,查询通常看起来像这样

SELECT * FROM quote_table;

但是在调用这些方法之后,查询看起来就像

SELECT * FROM quote_table
WHERE is_active = 1
ORDER BY updated_at desc
LIMIT 1;

最后,

$data = $read->fetchRow($select);

在这里,您使用先前提取的读取适配器来查询数据库中查询将获取的特定报价项行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读