当前位置:首页 > CMS教程 > 其它CMS > 列表

laravel5.6框架操作数据curd写法(查询构建器)实例分析

发布:smiling 来源: PHP粉丝网  添加日期:2022-02-08 09:07:22 浏览: 评论:0 

本文实例讲述了laravel5.6框架操作数据curd写法(查询构建器),分享给大家供大家参考,具体如下:

laravel5.6 数据库操作-查询构建器

  1. <?php 
  2. //laravel5.6 语法 demo示例 
  3. namespace App\Http\Controllers;//命名该控制App空间下名称 
  4. use Illuminate\Support\Facades\DB;//使用DB操作数据库 
  5. use App\Http\Controllers\Controller;//继承基础控制器 
  6. class UserController extends Controller 
  7.  /** 
  8.   * 展示应用的用户列表. 
  9.   * 
  10.   * @return Response 
  11.   */ 
  12.  public function index() 
  13.  { 
  14.   //DB使用为每种操作提供了相应方法:select(查),update(修改),insert(插入),delete(删除),statement(声明) 
  15.   //建议占位符,其他框架通用性强 
  16.   //原生sql写法 
  17.   $data = DB::select('select * from users where id = :id and name = :name ',[':id' => 1,':name' =>'测试']); 
  18.   //查方法 
  19.   //get() 方法获取表中所有记录(获取多行多列) 
  20.   $data = DB::table('users')->get(); 
  21.   //first() 方法将会返回单个对象(获取一行一列) 
  22.   //where() 方法查询指定条件对象 
  23.   $data = DB::table('users')->where('id','name','3','测试')->first(); 
  24.   //select() 方法可以查询指定自定义字段 
  25.   $data = DB::table('users')->select('id','name''email')->get(); 
  26.   //value() 方法从结果中获取单个值,该方法会直接返回指定列的值: 
  27.   $data = DB::table('users')->where('name','测试')->value('email'); 
  28.   //pluck() 方法获取单个列值的数组 
  29.   $data = DB::table('users')->pluck('name'); 
  30.   //count() 统计数量 
  31.   $data = DB::table('users')->count(); 
  32.   //exists() 方法来判断匹配查询条件的结果是否存在 
  33.   $data=DB::table('users')->where('id', 1)->exists(); 
  34.   //join() 方法连表查询 
  35.   $data = DB::table('users'
  36.    ->join('ceshi''users.id''=''ceshi.id'
  37.    ->select('users.*''ceshi.name'
  38.    ->get(); 
  39.   //leftJoin() 方法左连表查询 
  40.   $data = DB::table('users'
  41.    ->leftJoin('ceshi''users.id''=''ceshi.id'
  42.    ->select('users.*''ceshi.name'
  43.    ->get(); 
  44.   //where() 参数说明:(一)参数是列名,(二)参数是操作符,(三)参数是该列要比较的值 
  45.   $data = DB::table('users'
  46.    ->where('id''>=', 1) 
  47.    ->where('name''like''测试%'
  48.    ->get(); 
  49.   //传递条件数组到where中写法,建议多where查询使用这个方法 
  50.   $data = DB::table('users'
  51.    ->where([ 
  52.     ['id''>=', 1], 
  53.     ['name''like''测试%'
  54.    ]) 
  55.    ->get(); 
  56.   //whereBetween() 方法验证列值是否在给定值之间 
  57.   $data = DB::table('users'
  58.    ->whereBetween('id', [1, 3])->get(); 
  59.   //whereIn 方法验证给定列的值是否在给定数组中: 
  60.   $data = DB::table('users'
  61.    ->whereIn('id', [1, 2, 3]) 
  62.    ->get(); 
  63.   //orderBy() 方法排序 
  64.   $data = DB::table('users'
  65.    ->orderBy('id''desc'
  66.    ->get(); 
  67.   //insert()  方法插入记录到数据表 
  68.   //insertGetId() 方法插入记录并返回自增ID值 
  69.   $data=DB::table('users')->insert( 
  70.    [ 
  71.     'name'=>'测试'
  72.     'email' => 'ceshi.com'
  73.     'password' => 'ceshi' 
  74.    ] 
  75.   ); 
  76.   //update() 方法修改记录 
  77.   $data =DB::table('users'
  78.    ->where('id', 1) 
  79.    ->update(['name' => '测试']); 
  80.   //delete() 方法删除记录 
  81.   $data=DB::table('users')->where('id''>', 10)->delete(); 
  82.   //paginate() 方法分页 每页显示数量 
  83.   //注意:目前使用 groupBy 的分页操作不能被Laravel有效执行 
  84.   $data = DB::table('users')->paginate(2); 
  85.   //前台分页中链接附加参数实现分页 
  86.   $getName = $GET['name']?:''
  87.   $data = DB::table('users'
  88.     ->select('id','name','age'
  89.     ->where('name''like'$getName.'%'
  90.     ->paginate(2); 
  91.   //返回给前端视图数据 
  92.   return $this->view('index',['data'=>$data,'namePage'=>$getName]); 
  93.   //前端引用代码  
  94.   //appends 方法添加查询参数到分页链接查询字符串; 添加 &name=$namePage到每个分页链接中. 
  95.   {{ $data->appends(['name' => $namePage])->links() }} 
  96.   //simplePaginate() 方法分页视图中简单的显示“下一页”和“上一页”链接 
  97.   $data = DB::table('users')->simplePaginate(2); 
  98.   //返回给前端视图数据 
  99.   return $this->view('index',['data'=>$data]); 
  100.   //前端简单引用代码  
  101.   <div class="container"
  102.   @foreach ($users as $user
  103.    {{ $user->name }} 
  104.   @endforeach 
  105.   </div> 
  106.   {{ $data->links() }} 
  107.   //原生分页写法 
  108.   $page = 2; 
  109.   $pageSize = 1; 
  110.   $offset = ($page - 1) * $pageSize
  111.   $result = DB::table('picasa'
  112.    ->where('title''like''%'.$title.'%'
  113.    ->offset($offset
  114.    ->limit($pageSize
  115.    ->get(); 
  116.   //返回数据视图文件 
  117.   return $this->view('index', ['result' => $result]); 
  118.  } 

groupBy  对查询结果进行分组出现问题

当select和groupBy中列表不一致时候会报错。mysql从5.7以后,默认开启group by的严格模式。

解决方法:找到config/database​.php 在mysql下面把'strict' => true,改为false。[建议不要修改。写对正确操作语法。]

例如:

  1. $booked = DB::table('booked_user'
  2.  ->select('game_id', DB::raw('count(*) as total')) 
  3.  ->groupBy('game_id'
  4.  ->get(); 

开启sql查询日志

  1. DB::connection()->enableQueryLog();//开启QueryLog 
  2. $data = DB::table('users')->select('id','name''email')->get();//执行sql 
  3. dump(DB::getQueryLog());//sql语句和查询时间 

写入日志信息

八种日志级别:emergency、alert、critical、error、warning、 notice、info 和 debug

默认日志存放位置: /storage/logs/laravel.log

引用: use Illuminate\Support\Facades\Log;

  1. Log::emergency(string $messagearray $context = []); 
  2. Log::alert(string $messagearray $context = []); 
  3. Log::critical(string $messagearray $context = []); 
  4. Log::error(string $messagearray $context = []); 
  5. Log::warning(string $messagearray $context = []); 
  6. Log::notice(string $messagearray $context = []); 
  7. Log::info(string $messagearray $context = []); 
  8. Log::debug(string $messagearray $context = []);

Tags: laravel5.6查询构建器 curd

分享到: