laravel5.4中增删改查+搜索分页(运用ORM模式所做)。

2024-04-03 17:08

本文主要是介绍laravel5.4中增删改查+搜索分页(运用ORM模式所做)。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

表名:3ls_school;

控制器名 :SchoolController.php

 模型层:School.php

工厂:SchoolRepository.php

第一步:建立学校工厂在/core/Repositories里面建SchoolRepository.php

内容为:

<?php 


namespace Core\Repositories;


use Core\Models\School; 
use Core\Repositories\SchoolRepository;


class SchoolRepository extends EloquentRepository

    public function __construct(School $model)
    {
        parent::__construct($model);
    }


    //add
    public function save($data)
    {
        $this->model->setRawAttributes($data);


        if ($this->model->save()) {
            return true;
       } else{
            return false;
       }
    }


    //select
    public function getList($perPage = 10, $where=[], $trash=0)
    {   
        
        $query = $this->model->whereNested(function ($q) use ($where) {
                foreach ($where as $key => $value) {
                    $q->where($value[0], $value[1], $value[2]);
                }
            });
        if ( $trash == 1 ){ 
            $query->onlyTrashed();
        }


        return $query->orderBy('id', 'ASC')->paginate($perPage);
    }


    //删除
    public function delete($id)
    {
        return $this->model->find($id)->delete();
    }


    /**
     * Find a single entity
     *
     * composite primary key array
     *  - MemberOption::scopeCompositeKey
     *
     * @param $id
     * @param array $with
     * @return Illuminate\Database\Eloquent\Model
     */
    //查询单条信息
    public function find($id, array $with = [])
    {
        $entity = $this->make($with);


        if (is_array($id)) {
            $model = $entity->compositeKey($id)->first();
        } else {
            $model = $this->model->find($id);
        }
       return $model;
    }


    public function findByField($field, $value, $columns = ['*'])
    {
        return $this->model->where($field, '=', $value)->first($columns);
    }


     /**
     * 根据条件查询单条记录
     * @param  array $filters [description]
     * @param  array $columns [description]
     * @return [type]          [description]
     */
    public function findWhere($filters = [], $columns = ['*'])
    {
        return $this->model->whereNested(function ($query) use ($filters) {
            foreach ($filters as $key => $value) {
                $query->where($value[0], $value[1], $value[2]);
            }
        })->first($columns);
    }


    //修改学校信息
    public function update($id, array $input)
    {
        return $this->model->where('id', '=', $id)->update($input);
    }
    
    //统计个数 
     public function count(array $where = [])
    {
        return $this->model->whereNested(function ($query) use ($where) {
            foreach ($where as $field => $value) {
                if (is_array($value)) {
                    list($condition, $val) = $value;
                    $query->where($field, $condition, $val);
                } else {
                    $query->where($field, '=', $value);
                }
            }
        })->count();
    }
       
}

第二步:建立模型层在在/core/Models里面建School.php

内容为:

<?php
namespace Core\Models;


use Illuminate\Database\Eloquent\Model;


class School extends Model
{
    protected $table = '3ls_school';
    public $timestamps = false;


    
}


第三步:建立模型层在在/app/Http/Controllers/里面建SchoolController.php

内容为:

<?php


namespace App\Http\Controllers;


use Illuminate\Http\Request;
use Core\Repositories\SchoolRepository;


class SchoolController extends BackendController
{
    private $schools;


    public function __construct(SchoolRepository $schools)
    {
        parent::__construct();
        $this->schools = $schools;
    }


    //学校列表
    public function index(Request $request)
    {   
        $where=[];
        //判断是否接过学段值
        if ($request->get("period")!="") {
            $where[] = ['3ls_school.period', '=', $request->get("period")];
        }
        //判断是否接过性质值
        if ($request->get("snature")!="") {
           $where[] = ['3ls_school.snature', '=', $request->get("snature")];
        }
        //判断是否接过等级值
        if ($request->get("slevel")!="") {
           $where[] = ['3ls_school.slevel', '=', $request->get("slevel")];
        }
        //判断所选择的是省份还是市级
        $area=$request->get("area");
        if ($area!="") {
          if ($area=="province") {
              $where[] = ['3ls_school.province', '=', $request->get("search")];
          }else{
              $where[] = ['3ls_school.city', '=', $request->get("search")];
          }
        }
        //dd($where);
        if (!empty($where)) {//带有搜索条件的查询
           $perpage = $request->input('perpage', 10);
           $this->_view['lists'] = $this->schools->getList($perpage,$where);//所查询的结果集
           //dd(\DB::getQuerylog());
           $this->_view['perpage'] = $perpage;//每页显示条数
        }else{
           $perpage = $request->input('perpage', 10);
           $this->_view['lists'] = $this->schools->getList($perpage);//所查询的结果集
           $this->_view['perpage'] = $perpage;//每页显示条数
        }
        return view('school.index', $this->_view);
    }


    //学校添加表单页面
    public function create()
    {
      return view('school.create', $this->_view);
    }


    //添加学校
    public function store(Request $request)
    {
        $data['name'] = $request->input('name');
        $data['province'] = $request->input('s_province');
        $data['city'] = $request->input('s_city');
        $data['town'] = $request->input('s_county');
        $data['period'] = $request->input('period');
        $data['snature'] = $request->input(&

这篇关于laravel5.4中增删改查+搜索分页(运用ORM模式所做)。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/873486

相关文章

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

Nginx location匹配模式与规则详解

《Nginxlocation匹配模式与规则详解》:本文主要介绍Nginxlocation匹配模式与规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

Mysql中深分页的五种常用方法整理

《Mysql中深分页的五种常用方法整理》在数据量非常大的情况下,深分页查询则变得很常见,这篇文章为大家整理了5个常用的方法,文中的示例代码讲解详细,大家可以根据自己的需求进行选择... 目录方案一:延迟关联 (Deferred Join)方案二:有序唯一键分页 (Cursor-based Paginatio

mybatis-plus分页无效问题解决

《mybatis-plus分页无效问题解决》本文主要介绍了mybatis-plus分页无效问题解决,原因是配置分页插件的版本问题,旧版本和新版本的MyBatis-Plus需要不同的分页配置,感兴趣的可... 昨天在做一www.chinasem.cn个新项目使用myBATis-plus分页一直失败,后来经过多方

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

大数据spark3.5安装部署之local模式详解

《大数据spark3.5安装部署之local模式详解》本文介绍了如何在本地模式下安装和配置Spark,并展示了如何使用SparkShell进行基本的数据处理操作,同时,还介绍了如何通过Spark-su... 目录下载上传解压配置jdk解压配置环境变量启动查看交互操作命令行提交应用spark,一个数据处理框架

Python使用DeepSeek进行联网搜索功能详解

《Python使用DeepSeek进行联网搜索功能详解》Python作为一种非常流行的编程语言,结合DeepSeek这一高性能的深度学习工具包,可以方便地处理各种深度学习任务,本文将介绍一下如何使用P... 目录一、环境准备与依赖安装二、DeepSeek简介三、联网搜索与数据集准备四、实践示例:图像分类1.