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 heredoc和phpwind的模板技术使用方法小结
Mar 28 PHP
php 删除无限级目录与文件代码共享
Nov 22 PHP
PHP Google的translate API代码
Dec 10 PHP
PHP XML数据解析代码
May 26 PHP
php 表单提交大量数据发生丢失的解决方法
Mar 03 PHP
php递归删除目录下的文件但保留的实例分享
May 10 PHP
PHP依赖倒置(Dependency Injection)代码实例
Oct 11 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
Jan 07 PHP
PHP获取photoshop写入图片文字信息的方法
Mar 31 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
Apr 15 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
Apr 03 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
Apr 09 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+mysql开源XNA 聚合程序发布 下载
2007/07/13 PHP
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
一个JavaScript变量声明的知识点
2013/10/28 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
jquery实现点击变换导航样式的方法
2015/08/31 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
原生javascript实现图片放大镜效果
2017/01/18 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
2017/09/25 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
Vue.js 利用v-for中的index值实现隔行变色
2018/08/01 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
2020/07/22 Javascript
解决Vue中使用keepAlive不缓存问题
2020/08/04 Javascript
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
Python 合并多个TXT文件并统计词频的实现
2019/08/23 Python
Python 词典(Dict) 加载与保存示例
2019/12/06 Python
django序列化serializers过程解析
2019/12/14 Python
在Tensorflow中查看权重的实现
2020/01/24 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
如何一键升级Python所有包
2020/11/05 Python
python中用ctypes模拟点击的实例讲解
2020/11/26 Python
网页布局中CSS样式无效的十个重要原因详解
2017/08/10 HTML / CSS
雷蛇美国官网:Razer
2020/04/03 全球购物
档案管理员岗位职责
2013/12/01 职场文书
技术学校毕业生求职信分享
2013/12/02 职场文书
单位门卫岗位职责
2013/12/20 职场文书
2016教师国培研修感言
2015/12/08 职场文书
Redis Cluster集群动态扩容的实现
2021/07/15 Redis