ThinkPHP5 模型(一:模型基类)

  • A+
所属分类: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 ];
     }
 }


avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: