分类节点model层CI写法

本文介绍了一个商品类别管理模型的实现细节,包括如何通过递归算法构建商品类别的树状结构,以及添加、删除和更新商品类别的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

// 商品类别模型
class Category_model extends CI_Model{

const TBL_CATE = "category";
/**
* @access public
* @param $pid 节点的id
* @param array 返回该节点的所有后代节点
*/
public function list_cate($pid = 0){
#获取所有的记录
$query = $this->db->get(self::TBL_CATE);
$cates = $query->result_array();
#对类别进行重组,并返回
return $this->_tree($cates,$pid);
}
/**
*@access private
*@param $arr array 要遍历的数组
*@param $pid 节点的pid,默认为0,表示从顶级节点开始
*@param $level int 表示层级 默认为0
*@param array 排好序的所有后代节点
*/
private function _tree($arr,$pid = 0,$level = 0){
static $tree = array(); #用于保存重组的结果,注意使用静态变量
foreach ($arr as $v) {
if ($v['parent_id'] == $pid){
//说明找到了以$pid为父节点的子节点,将其保存
$v['level'] = $level;
$tree[] = $v;
//然后以当前节点为父节点,继续找其后代节点
$this->_tree($arr,$v['cat_id'],$level + 1);
}
}
return $tree;

}
#添加分类信息
public function add_category($data){
return $this->db->insert(self::TBL_CATE,$data);
}
#删除一条记录
public function delete($id){
$result=$this->db->delete(self::TBL_CATE,array('cat_id'=>$id));
return $result;
}
#根据id获取一条数据
public function byid_data($id){
$result=$this->db->where(array('cat_id'=>$id))->get(self::TBL_CATE)->result_array();
return $result;
}
#根据id来更新数据
public public function byid_update($id,$data){
$result=$this->db->update(self::TBL_CATE,$data,array('cat_id'=>$id));
return $result;
}

}

### 设备树注释的正确写法 设备树源文件(DTS)中的注释遵循标准 C 风格语法,支持单行注释和多行注释。以下是具体说明: #### 单行注释 在 DTS 文件中,可以使用 `//` 进行单行注释。这种形式适合快速标注某一行的内容或解释特定字段的作用。 ```c // 此处定义了一个串口中断属性 interrupts = <1 2 3>; // 中断号分别为 1、2 和 3 ``` #### 多行注释 对于较长的说明文字,可使用 `/* */` 来包裹多行注释内容。这种方式适用于复杂节点或属性的详细描述。 ```c /* * 定义 AIPS 总线下的 KPP 子节点 * kpp 表示键盘控制器 */ kpp: kpp@020b8000 { compatible = "fsl,imx6ul-kpp"; /* 兼容性字符串 */ }; ``` #### 实际应用中的注意事项 - **保持简洁明了**:注释应尽量简短且清晰,避免冗余信息[^1]。 - **一致性原则**:团队协作开发时需统一采用某种风格(如仅允许单行注释),以便维护代码的一致性和易读性[^2]。 - **功能导向型注释**:优先为关键逻辑提供必要的背景信息而非逐字翻译已有数据[^4]。 以下是一个完整的例子展示如何合理运用这两种类型的注释: ```c /dts-v1/; /plugin/; #include <dt-bindings/interrupt-controller/arm-gic.h> / { model = "Freescale i.MX6UL EVK Board"; compatible = "fsl,imx6ul"; /* * Chosen node is used by U-Boot to pass parameters into the Linux kernel. * Here we define basic boot arguments including console settings and NFS mount options. */ chosen { bootargs = "console=ttymxc0,115200 rw root=/dev/nfs nfsroot=192.168.1.77:/home/jl/linux/nfs/rootfs ip=192.168.1.66:192.168.1.77:192.168.1.1:255.255.255.0::eth0:off"; }; soc { aips1: aips-bus@02000000 { reg = <0x02000000 0x100000>; /* * Keyboard Peripheral (KPP) controller definition. * Interrupt configuration specifies falling edge trigger as per hardware requirements [^3]. */ kpp: kpp@020b8000 { compatible = "fsl,imx6ul-kpp"; reg = <0x020b8000 0x4000>; interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; // 使用 GIC SPI 类型配置中断 }; }; }; }; ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值