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 相关文章推荐
生成缩略图
Oct 09 PHP
php chr() ord()中文截取乱码问题解决方法
Sep 08 PHP
PHP 第二节 数据类型之转换
Apr 28 PHP
php中substr()函数参数说明及用法实例
Nov 15 PHP
php中实现可以返回多个值的函数实例
Mar 21 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
Apr 03 PHP
PHP用反撇号执行外部命令
Apr 14 PHP
PHP云打印类完整示例
Oct 15 PHP
PHP内置加密函数详解
Nov 20 PHP
php及codeigniter使用session-cookie的方法(详解)
Apr 06 PHP
php下载远程大文件(获取远程文件大小)的实例
Jun 17 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 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
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
php生成WAP页面
2006/10/09 PHP
剖析 PHP 中的输出缓冲
2006/12/21 PHP
php实现文件下载(支持中文文名)
2013/12/04 PHP
IIS下PHP的三种配置方式对比
2014/11/20 PHP
CI框架文件上传类及图像处理类用法分析
2016/05/18 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
浅谈JavaScript中的String对象常用方法
2015/02/25 Javascript
js实现简洁大方的二级下拉菜单效果代码
2015/09/01 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
浅谈node.js 命令行工具(cli)
2018/05/10 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
[02:10]DOTA2亚洲邀请赛 EG战队出场宣传片
2015/02/07 DOTA
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
2018/05/16 Python
python+PyQT实现系统桌面时钟
2020/06/16 Python
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
Pytorch 保存模型生成图片方式
2020/01/10 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
python中upper是做什么用的
2020/07/20 Python
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
夏季奶茶店创业计划书
2014/01/16 职场文书
培训楼经理岗位责任制
2014/02/10 职场文书
四风问题个人对照检查材料
2014/09/26 职场文书
普通党员整改措施
2014/10/24 职场文书
2015年乡镇残联工作总结
2015/05/13 职场文书
话题作文之诚信
2019/11/28 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP
改造DE1103三步曲
2022/04/07 无线电
Python万能模板案例之matplotlib绘制甘特图
2022/04/13 Python
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server