laravel5.6框架操作数据curd写法(查询构建器)实例分析


Posted in PHP onJanuary 26, 2020

本文实例讲述了laravel5.6框架操作数据curd写法(查询构建器)。分享给大家供大家参考,具体如下:

laravel5.6 数据库操作-查询构建器

<?php
//laravel5.6 语法 demo示例
namespace App\Http\Controllers;//命名该控制App空间下名称
use Illuminate\Support\Facades\DB;//使用DB操作数据库
use App\Http\Controllers\Controller;//继承基础控制器
class UserController extends Controller
{
 /**
  * 展示应用的用户列表.
  *
  * @return Response
  */
 public function index()
 {
  //DB使用为每种操作提供了相应方法:select(查),update(修改),insert(插入),delete(删除),statement(声明)
  //建议占位符,其他框架通用性强
  //原生sql写法
  $data = DB::select('select * from users where id = :id and name = :name ',[':id' => 1,':name' =>'测试']);
  //查方法
  //get() 方法获取表中所有记录(获取多行多列)
  $data = DB::table('users')->get();
  //first() 方法将会返回单个对象(获取一行一列)
  //where() 方法查询指定条件对象
  $data = DB::table('users')->where('id','name','3','测试')->first();
  //select() 方法可以查询指定自定义字段
  $data = DB::table('users')->select('id','name', 'email')->get();
  //value() 方法从结果中获取单个值,该方法会直接返回指定列的值:
  $data = DB::table('users')->where('name','测试')->value('email');
  //pluck() 方法获取单个列值的数组
  $data = DB::table('users')->pluck('name');
  //count() 统计数量
  $data = DB::table('users')->count();
  //exists() 方法来判断匹配查询条件的结果是否存在
  $data=DB::table('users')->where('id', 1)->exists();
  //join() 方法连表查询
  $data = DB::table('users')
   ->join('ceshi', 'users.id', '=', 'ceshi.id')
   ->select('users.*', 'ceshi.name')
   ->get();
  //leftJoin() 方法左连表查询
  $data = DB::table('users')
   ->leftJoin('ceshi', 'users.id', '=', 'ceshi.id')
   ->select('users.*', 'ceshi.name')
   ->get();
  //where() 参数说明:(一)参数是列名,(二)参数是操作符,(三)参数是该列要比较的值
  $data = DB::table('users')
   ->where('id', '>=', 1)
   ->where('name', 'like', '测试%')
   ->get();
  //传递条件数组到where中写法,建议多where查询使用这个方法
  $data = DB::table('users')
   ->where([
    ['id', '>=', 1],
    ['name', 'like', '测试%']
   ])
   ->get();
  //whereBetween() 方法验证列值是否在给定值之间
  $data = DB::table('users')
   ->whereBetween('id', [1, 3])->get();
  //whereIn 方法验证给定列的值是否在给定数组中:
  $data = DB::table('users')
   ->whereIn('id', [1, 2, 3])
   ->get();
  //orderBy() 方法排序
  $data = DB::table('users')
   ->orderBy('id', 'desc')
   ->get();
  //insert()  方法插入记录到数据表
  //insertGetId() 方法插入记录并返回自增ID值
  $data=DB::table('users')->insert(
   [
    'name'=>'测试',
    'email' => 'ceshi.com',
    'password' => 'ceshi'
   ]
  );
  //update() 方法修改记录
  $data =DB::table('users')
   ->where('id', 1)
   ->update(['name' => '测试']);
  //delete() 方法删除记录
  $data=DB::table('users')->where('id', '>', 10)->delete();
  //paginate() 方法分页 每页显示数量
  //注意:目前使用 groupBy 的分页操作不能被Laravel有效执行
  $data = DB::table('users')->paginate(2);
  //前台分页中链接附加参数实现分页
  $getName = $GET['name']?:'';
  $data = DB::table('users')
    ->select('id','name','age')
    ->where('name', 'like', $getName.'%')
    ->paginate(2);
  //返回给前端视图数据
  return $this->view('index',['data'=>$data,'namePage'=>$getName]);
  //前端引用代码 
  //appends 方法添加查询参数到分页链接查询字符串; 添加 &name=$namePage到每个分页链接中.
  {{ $data->appends(['name' => $namePage])->links() }}
  //simplePaginate() 方法分页视图中简单的显示“下一页”和“上一页”链接
  $data = DB::table('users')->simplePaginate(2);
  //返回给前端视图数据
  return $this->view('index',['data'=>$data]);
  //前端简单引用代码 
  <div class="container">
  @foreach ($users as $user)
   {{ $user->name }}
  @endforeach
  </div>
  {{ $data->links() }}
  //原生分页写法
  $page = 2;
  $pageSize = 1;
  $offset = ($page - 1) * $pageSize;
  $result = DB::table('picasa')
   ->where('title', 'like', '%'.$title.'%')
   ->offset($offset)
   ->limit($pageSize)
   ->get();
  //返回数据视图文件
  return $this->view('index', ['result' => $result]);
 }
}

groupBy  对查询结果进行分组出现问题

当select和groupBy中列表不一致时候会报错。mysql从5.7以后,默认开启group by的严格模式。

解决方法:找到config/database​.php 在mysql下面把'strict' => true,改为false。[建议不要修改。写对正确操作语法。]

例如:

$booked = DB::table('booked_user')
 ->select('game_id', DB::raw('count(*) as total'))
 ->groupBy('game_id')
 ->get();

开启sql查询日志

DB::connection()->enableQueryLog();//开启QueryLog
$data = DB::table('users')->select('id','name', 'email')->get();//执行sql
dump(DB::getQueryLog());//sql语句和查询时间

写入日志信息

八种日志级别:emergency、alert、critical、error、warning、 notice、info 和 debug
默认日志存放位置: /storage/logs/laravel.log

引用: use Illuminate\Support\Facades\Log;

Log::emergency(string $message, array $context = []);
Log::alert(string $message, array $context = []);
Log::critical(string $message, array $context = []);
Log::error(string $message, array $context = []);
Log::warning(string $message, array $context = []);
Log::notice(string $message, array $context = []);
Log::info(string $message, array $context = []);
Log::debug(string $message, array $context = []);

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 输出缓存详解
Jun 20 PHP
提高PHP编程效率 引入缓存机制提升性能
Feb 15 PHP
PHP取整数函数常用的四种方法小结
Jul 05 PHP
解析php扩展php_curl.dll不加载的解决方法
Jun 26 PHP
php实现mysql数据库分表分段备份
Jun 18 PHP
php递归函数三种实现方法及如何实现数字累加
Aug 07 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
Aug 31 PHP
PHP框架Laravel插件Pagination实现自定义分页
Apr 22 PHP
PHP微信红包生成代码分享
Oct 06 PHP
php生成网页桌面快捷方式
May 05 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 PHP
详解PHP的抽象类和抽象方法以及接口总结
Mar 15 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 #PHP
Laravel框架自定义分页样式操作示例
Jan 26 #PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
Jan 26 #PHP
php的instanceof和判断闭包Closure操作示例
Jan 26 #PHP
yii2.0框架场景的简单使用示例
Jan 25 #PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
Jan 25 #PHP
laravel框架模型和数据库基础操作实例详解
Jan 25 #PHP
You might like
深入理解PHP之数组(遍历顺序)  Laruence原创
2012/06/13 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
PHP中mysqli_affected_rows作用行数返回值分析
2014/12/26 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
详解php中空字符串和0之间的关系
2016/10/23 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
2019/09/29 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
2019/10/16 PHP
JQuery toggle使用分析
2009/11/16 Javascript
jquery异步循环获取功能实现代码
2010/09/19 Javascript
Jquery封装tab自动切换效果的具体实现
2013/07/13 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
js轮播图代码分享
2016/07/14 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
使用D3.js制作图表详解
2017/08/13 Javascript
详解 vue.js用法和特性
2017/10/15 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
Python中的descriptor描述器简明使用指南
2016/06/02 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
django admin.py 外键,反向查询的实例
2019/07/26 Python
python动态文本进度条的实例代码
2020/01/22 Python
tensorflow实现残差网络方式(mnist数据集)
2020/05/26 Python
夏威夷航空官网:Hawaiian Airlines
2016/09/11 全球购物
西班牙语在线票务市场:SuperBoletería
2019/06/10 全球购物
开会迟到检讨书
2014/02/03 职场文书
物流专员岗位职责
2014/02/17 职场文书
被告答辩状范文
2015/05/22 职场文书
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android