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新手上路(六)
Oct 09 PHP
PHP实现定时执行任务的方法
Oct 05 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
php定义一个参数带有默认值的函数实例分析
Mar 16 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
Dec 31 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
Mar 15 PHP
php中通过eval实现字符串格式的计算公式
Mar 18 PHP
php封装的mongodb操作类代码
Aug 06 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
PHP代码重构方法漫谈
Apr 17 PHP
PHP项目多语言配置平台实现过程解析
May 18 PHP
PHP SESSION跨页面传递失败解决方案
Dec 11 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 Session机制简介及用法
2014/08/19 PHP
Symfony2创建页面实例详解
2016/03/18 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
2016/12/08 PHP
php显示页码分页类的封装
2017/06/08 PHP
详解json在php中的应用
2018/09/30 PHP
Javascript里使用Dom操作Xml
2007/01/22 Javascript
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
2011/12/08 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
2013/10/22 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
JavaScript数组去重的两种方法推荐
2016/04/05 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
2017/06/14 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
js遍历添加栏目类添加css 再点击其它删除css【推荐】
2018/06/12 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
python利用ffmpeg进行录制屏幕的方法
2019/01/10 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
python爬虫之遍历单个域名
2019/11/20 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
美国顶级奢侈茶:Mighty Leaf Tea(美泰茶)
2016/11/26 全球购物
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
美国知名生活购物网站:Goop
2017/11/03 全球购物
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
什么是事务?事务有哪些性质?
2012/03/11 面试题
上海天奕面试题笔试题
2015/04/19 面试题
工商学院毕业生个人自我评价
2013/09/19 职场文书
党员承诺践诺书
2014/05/20 职场文书
Redis RDB技术底层原理详解
2021/09/04 Redis