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 常用类整理
Dec 23 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
Jul 15 PHP
深入php之规范编程命名小结
May 15 PHP
php实现简单洗牌算法
Jun 18 PHP
mac下Apache + MySql + PHP搭建网站开发环境
Jun 02 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
PHP二维数组排序简单实现方法
Feb 14 PHP
php格式化json函数示例代码
May 12 PHP
php获取linux命令结果的实例
Mar 13 PHP
PHP反射原理与用法深入分析
Sep 28 PHP
php桥接模式应用案例分析
Oct 23 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中的extract的作用分析
2008/04/09 PHP
PHP版 汉字转码的实现详解
2013/06/09 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
PHP闭包函数详解
2016/02/13 PHP
Zend Framework框架实现类似Google搜索分页效果
2016/11/25 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
php 可变函数使用小结
2018/06/12 PHP
div层的移动及性能优化
2010/11/16 Javascript
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
2013/11/25 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
js获取内联样式的方法
2015/01/27 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
Web 开发中Ajax的Session 超时处理方法
2017/01/19 Javascript
微信小程序request出现400的问题解决办法
2017/05/23 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
2020/08/07 jQuery
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
Mac下Supervisor进程监控管理工具的安装与配置
2014/12/16 Python
Django REST framework内置路由用法
2019/07/26 Python
python实现邮件自动发送
2019/08/10 Python
python如何设置静态变量
2020/09/07 Python
Python中Yield的基本用法
2020/10/18 Python
施工人员岗位职责
2013/12/12 职场文书
教师个人鉴定材料
2014/02/08 职场文书
《手指教学》反思
2014/02/14 职场文书
目标责任书范文
2014/04/14 职场文书
行政工作试用期自我评价
2014/09/14 职场文书
2015年建筑工作总结报告
2015/05/04 职场文书
Mysql忘记密码解决方法
2022/02/12 MySQL