实现php模型基类,ThinkPHP5 模型(一:模型基类) | 剑花烟雨江南

如果我们把所有的数据处理 逻辑处理统统统一在模型类中,那么你的程序核心就是可以说模型。

既然模型如此重要,我们可以把更大的复用代码封装在基类中,增加开发速度,这样也可以减少代码的bug率。

模型基类的建立

在common模块下,common/model 下建立 Base.php ,并在文件中将其设置为抽象类以及继承thinkphp5的model类。

namespace app\common\model;

abstract class Base extends Model

{

}

基类的分层

例如:我们往往需要记录一些操作日志在数据库中,可以建立 BaseLog.php,并继承Base.php。其余需要记录日志的 模型只需继承 BaseLog 即可。

namespace app\common\model;

abstract class BaseLog extends Base

{

}

接下来,我们可以把一些公用的方法封装在 Base.php 中,供其余模型调用。

获取主键

private $primary_key;

protected function initialize()

{

parent::initialize();

$this->primary_key = $this->getPk();

}

添加/编辑数据

/**

* 保存/编辑数据

* @param array $data  数据

* @param bool $allow 是否过滤字段

* @return false|int

* @author <721001522@qq.com>

*/

public function editData($data, $allow = TRUE)

{

if (isset($data[$this->primary_key ]))

{

if (is_numeric($data[$this->primary_key ]) && $data[$this->primary_key ] > 0)

{

$save = $this->allowField($allow)->save($data, [$this->primary_key => $data[$this->primary_key]]);

} else{

$save = $this->allowField($allow)->save($data);

}

} else{

$save = $this->allowField($allow)->save($data);

}

return $save;

}

添加/编辑并返回主键

/**

* 保存/添加数据

* @param  array $data

* @param bool $allow

* @return false|int|mixed

* @author <721001522@qq.com>

*/

public function createData($data, $allow = true)

{

if (isset($data[$this->primary_key ]))

{

if (is_numeric($data[$this->primary_key ]) && $data[$this->primary_key ] > 0)

{

$save = $this->allowField($allow)->save($data, [$this->primary_key => $data[$this->primary_key ]]);

return $save;

} else{

unset($data[$this->primary_key ]);

$res = self::create($data, $allow);

$save = $res->getData();

return $save[$this->primary_key ];

}

} else

{

$res = self::create($data, $allow);

$save = $res->getData();

return $save[$this->primary_key ];

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值