数字化技能提升教程,数字化时代生存宝典

数字化百科 / 词条 / ThinkSNS-应用开发范例-开始编程MODEL层

ThinkSNS-应用开发范例-开始编程MODEL层

查看全部词条命名空间:Main

导航: 上一页

MODEL层

在Lib/Model/目录下,新建三个文件GiftCategoryModel.class.php,GiftModel.class.php 和UserGiftModel.class.php,分别创建三个代码如下:


class GiftCategoryModel extends Model{ },
class GiftModel extends AdvModel{ },
class UserGiftModel extends Model{ }

通过以上步骤,我们现在已将数据库表和模型类建立了联接关系。在项目的Action 类和Model 类中,已可以直接对数据库进行相关操作。有些人习惯在Model 类里封装一些方法,这样更符合MVC 规范,也有一些人习惯把方法都写在Action 里,方便程序的阅读,这主要看个人习惯。本次开发将基本方法写进入Model 层里。

  • 我们先看看GiftCategoryModel 里的代码,已经附上详细注释。

  • _initialize
  • 初始化函数
  • @return void
  • /
  • public function _initialize(){ //初始化只搜索状态status 为1 的。 $this->status = 1; parent:: _initialize(); } public function setGift($gift){ $this->gift = $gift; //赋值礼品表模型 } /**
    • GiftToCategory
    • 获取已经分组的礼物
    • @return unknown_type
    • /
    public function GiftToCategory(){ //初始化礼物分组的变量,礼物数据的变量和最后结果的变量 $gift = $gift_category = array(); //获取礼物分组和礼物数据 $gift_category = $this->findAll(); $gifts = $this->gift->findAll(); //根据分组重组数据 foreach ($gift_category as &$category){ foreach($gifts as $gift){ if($category['id'] == $gift['categoryId']) $category['gifts'][] = $gift; } } //返回结果 return $gift_category; } } ?>
    • 接着看看GiftModel 里的代码,也已经附上详细注释。
    
    
  • _initialize
  • 初始化函数
  • @return void
  • /
  • public function _initialize(){ parent:: _initialize(); } /**
    • assertNumAreEmpty
    • 判断是否礼品数是否足够
    • @return bool
    • /
    public function assertNumAreEmpty($id,$count = null){ $num = (int)$this->where('id='。$id)->getField('num'); if($num == 0 || $num < $count){ return true; } return false; } } ?>
    • 最后看看UserGiftModel 里的代码,也已经附上详细注释。
    api = $api; //赋值网站API
    }
    public function setGift($gift){
    $this->gift = $gift; //赋值礼品表模型
    }
    public function setCategory($category){
    $this->category = $category; //赋值礼品类型表模型
    }
    /**
    
    • receiveGift
    • 获得某个人收取的礼物
    • @param $uid
    • @return Gift;
    • /
    public function receiveList($uid){ $map['toUserId'] = $uid; return $this->where($map)->order('id desc')->findPage(15); } /**
    • sendGift
    • 获得某个人发送的礼物列表
    • @param $uid
    • @return unknown_type
    • /
    public function sendList($uid){ $map['fromUserId'] = $uid; return $this->where($map)->order('id desc')->findPage(15); } /**
    • sendGift
    • 发送礼物
    *
    • @param array $toUid 接收礼品人的ID(可以多个,以,分隔)
    • @param $fromUid 送礼者ID
    • @param $sendInfo 附加信息和发送方式
    • @param $giftInfo 礼品信息
    • /
    public function sendGift($toUid,$fromUid,$fromName,$sendInfo,$giftInfo){ //判断参数是否合法。不合法返回false if(!is_numeric($fromUid)){ return '非法操作!'; } $toUser = explode(',',$toUid); $userNum = count($toUser); //判断是否是自己给自己送礼物 if(in_array($fromUid,$toUser)){ return '不能给自己送礼物!'; } //判断是否有足够的礼物数 if($this->gift->assertNumAreEmpty($giftInfo['id'],$userNum)){ return '礼物库存不足,发送礼品失败!'; } $map['giftPrice'] = $giftPrice; $map['giftImg'] = t($giftInfo['img']); $map['sendInfo'] = t($sendInfo['sendInfo']); $map['sendWay'] = intval($sendInfo['sendWay']); $map['fromUserId'] = intval($fromUid); $map['fromUserName'] = t($fromName); $map['cTime'] = time(); $res = $this->__insertData($toUser,$map); //如果入库过程成功。则做相应的处理 if($res){ //礼物数减1 $this->gift->setDec('num','id='。$giftInfo['id'],$userNum); return 1; }else{ return '发送礼品失败!'; } } /**
    • __insertData
    • 把数据插入数据库
    • @param $toUser 发送对象ID $map 数据组
    • @return $add 插入结果集;
    • /
    private function __insertData($toUser,$map){ foreach ($toUser as $_touid){ //组成数据集 $map['toUserId'] = intval($_touid); //将信息入库 $res = $this->add($map); } return $res; } } ?>

    参考资料

    category:ThinkSNS