laravel系统开发经验(三、模型设计)

纲要

  文章是关于在laravel环境下开发遇到的一些问题和处理方法的集合,会涉及方方面面,这个是第一个章的内容。

2.模型

  也定义了一个公用模型类,便于单独实现的每个模型继承一些封装好的分页,查询详情等方法。

  模型方法的实现上来说,传入的查询参数,最好是以array的形式,而不是一个一个参数的形式传入。原因是,array可以无限扩展,便于不同的控制器方法来调用,同时从形式上来看,代码也简洁一些。

function page($id,$title,$type,$name,$addtime,$updatetime,$member_id){
    //code
}

function page($request,$member_id){
    //code
}

  对于常见方法的封装,是否有必要?实际上一个模型里面最常见用到的就是五种操作:记录列表查询,记录详情,添加记录,编辑记录,删除记录,比较复杂的扩展情况就是需要连表查询。

  既然通用的操作只有五种,何必在每一个地方都去重写一遍,不定义好之后直接调用方法,不会简单很多吗?

function del1($id){
    $map = ['id'=>$id];
    $result = DB::table()->where($map)->delete();
    if($result){
        return something;
    }else{
        return something;
    }
}

function del2($id){
    $map =['id'=>$id];
    return $this->delCommon($tableName,$map),
}

模型里面还有一些小小的坑

1.关于分页,laravel自带的分页不能满足要求的时候,要自定义一个分页,需要自己填充好分页的方法

2.csrf的token,这个在表单提交有时候忘记了,有时候可能会因为这个找半天的bug

3.文件上传。建议是封装成一个单独的js组件,可以在任意的表单里面直接调用,表单中上传的文件实际上是一个文件名,而不是二进制的文件,这样写的话,后台的逻辑会更加简单一些,在项目的后期有可能要传输到oss或者文件服务器上,写在一个地方也方便后续更改。

4.另外就是富文本编辑器ueditor,建议是将默认的目录更改一下,放在同一个的上传目录下。

发表评论请留下您的大名
  • 最新评论
  • 总共0条评论