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

相关文章

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

Golang如何用gorm实现分页的功能

《Golang如何用gorm实现分页的功能》:本文主要介绍Golang如何用gorm实现分页的功能方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景go库下载初始化数据【1】建表【2】插入数据【3】查看数据4、代码示例【1】gorm结构体定义【2】分页结构体

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

Mybatis的分页实现方式

《Mybatis的分页实现方式》MyBatis的分页实现方式主要有以下几种,每种方式适用于不同的场景,且在性能、灵活性和代码侵入性上有所差异,对Mybatis的分页实现方式感兴趣的朋友一起看看吧... 目录​1. 原生 SQL 分页(物理分页)​​2. RowBounds 分页(逻辑分页)​​3. Page

Swagger在java中的运用及常见问题解决

《Swagger在java中的运用及常见问题解决》Swagger插件是一款深受Java开发者喜爱的工具,它在前后端分离的开发模式下发挥着重要作用,:本文主要介绍Swagger在java中的运用及常... 目录前言1. Swagger 的主要功能1.1 交互式 API 文档1.2 客户端 SDK 生成1.3

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2