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
isset和empty的区别
Jan 15 PHP
PHP HTML代码串截取代码
Dec 29 PHP
PHP 一个随机字符串生成代码
May 26 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
Apr 18 PHP
PHP中全面阻止SQL注入式攻击分析小结
Jan 30 PHP
php生成curl命令行的方法
Dec 14 PHP
PHP内核探索之解释器的执行过程
Dec 22 PHP
WordPress主题制作之模板文件的引入方法
Dec 28 PHP
解析PHP之提取多维数组指定列的方法
Jan 03 PHP
PHP7新功能总结
Apr 14 PHP
Thinkphp5.0 框架Model模型简单用法分析
Oct 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
如何开发一个虚拟域名系统
2006/10/09 PHP
jquery 防止表单重复提交代码
2010/01/21 Javascript
理解Javascript_12_执行模型浅析
2010/10/18 Javascript
window.onload追加函数使用示例
2014/03/03 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
Javascript计算二维数组重复值示例代码
2016/12/18 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
使用vue-router设置每个页面的title方法
2018/02/11 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
Javascript通过控制类名更改样式
2019/05/24 Javascript
python使用rsa加密算法模块模拟新浪微博登录
2014/01/22 Python
Python生成随机MAC地址
2015/03/10 Python
Django restframework 框架认证、权限、限流用法示例
2019/12/21 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
Pandas缺失值2种处理方式代码实例
2020/06/13 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
利用Python的folium包绘制城市道路图的实现示例
2020/08/24 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
北京天润融通.net面试题笔试题
2012/02/20 面试题
银行员工职业规划范文
2014/01/21 职场文书
四年大学生活的自我评价范文
2014/02/07 职场文书
教师远程培训感言
2014/03/06 职场文书
债务授权委托书范本
2014/10/17 职场文书
个人存款证明书
2014/10/18 职场文书
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
幼儿园小班班务总结
2015/08/03 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书