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 相关文章推荐
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
May 04 PHP
php设计模式 Mediator (中介者模式)
Jun 26 PHP
PHP采集利器 Snoopy 试用心得
Jul 03 PHP
php实现的一个很好用HTML解析器类可用于采集数据
Sep 23 PHP
PHP防止跨域提交表单
Nov 01 PHP
PHP中session变量的销毁
Feb 27 PHP
php中header设置常见文件类型的content-type
Jun 23 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 PHP
Laravel关系模型指定条件查询方法
Oct 10 PHP
phpQuery采集网页实现代码实例
Apr 02 PHP
php中try catch捕获异常实例详解
Aug 06 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
Aug 17 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 生成随机验证码图片代码
2010/02/08 PHP
PHP数据流应用的一个简单实例
2012/09/14 PHP
PHP数组及条件,循环语句学习
2012/11/11 PHP
PHP中模拟处理HTTP PUT请求的例子
2014/07/22 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
thinkphp数据查询和遍历数组实例
2014/11/28 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
IE6下CSS图片缓存问题解决方法
2010/12/09 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
2018/08/31 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
2018/10/10 jQuery
vue+springboot图片上传和显示的示例代码
2020/02/14 Javascript
python的几种开发工具介绍
2007/03/07 Python
python 实现堆排序算法代码
2012/06/05 Python
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
2015/04/25 Python
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
python开发前景如何
2020/06/11 Python
python + selenium 刷B站播放量的实例代码
2020/06/12 Python
Django跨域请求原理及实现代码
2020/11/14 Python
CSS3制作炫酷的自定义发光文字
2016/03/28 HTML / CSS
应届毕业生自我鉴定范文
2013/12/27 职场文书
护理人员的自我评价分享
2014/03/15 职场文书
支部书记四风对照材料
2014/08/28 职场文书
汽车转让协议书
2015/01/29 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书