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 相关文章推荐
超强分页类2.0发布,支持自定义风格,默认4种显示模式
Jan 02 PHP
PHP 根据IP地址控制访问的代码
Apr 22 PHP
php INI配置文件的解析实现分析
Jan 04 PHP
利用谷歌 Translate API制作自己的翻译脚本
Jun 04 PHP
php实现Linux服务器木马排查及加固功能
Dec 29 PHP
19个Android常用工具类汇总
Dec 30 PHP
PHP安装memcached扩展笔记
May 28 PHP
PHP如何实现Unicode和Utf-8编码相互转换
Jul 29 PHP
PHP设置头信息及取得返回头信息的方法
Jan 25 PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 PHP
使用PHP开发留言板功能
Nov 19 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
Apr 06 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 preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
ThinkPHP的URL重写问题
2014/06/22 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
Jquery实现无刷新DropDownList联动实现代码
2010/03/08 Javascript
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
关于jQuery参考实例2.0 用jQuery选择元素
2013/04/07 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
2017/02/17 Javascript
Node.js创建HTTP文件服务器的使用示例
2018/05/11 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
分享vue里swiper的一些坑
2018/08/30 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
[39:21]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.24
2019/09/10 DOTA
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
Django model序列化为json的方法示例
2018/10/16 Python
pycharm在调试python时执行其他语句的方法
2018/11/29 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
2019/05/06 Python
python中pytest收集用例规则与运行指定用例详解
2019/06/27 Python
解决pycharm中导入自己写的.py函数出错问题
2020/02/12 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
初三学生评语大全
2014/04/24 职场文书
党员四风问题对照检查材料思想汇报
2014/09/16 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
稽核岗位职责范本
2015/04/13 职场文书
安全生产标语口号
2015/12/26 职场文书
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL