当前位置:首页 >> laravel

Laravel框架之数据库原生查询操作

  • laravel
  • 2019-09-29 10:32:47
  • 7人已阅读
简介Laravel框架之数据库原生查询操作,知识点:基本CURD(增删改查)操作;参数绑定方式;执行其它非CURD语句

Laravel框架之数据库原生查询操作

知识点

  1. 基本CURD(增删改查)操作

  2. 参数绑定方式

  3. 执行其它非CURD语句


1.基本CURD(增删改查)操作

  • 查询: DB::select("SELECT * FROM 表名 WHERE 条件 ...", [参数列表]);

  • 新增: DB::insert("INSERT INTO 表名 (字段列表) VALUES (值列表)", [参数列表]);

  • 更新: DB::update("UPDATE 表名 SET 字段=值 ... WHERE 更新条件", [参数列表]);

  • 更新: DB::delete("DELETE FROM 表名 WHERE 删除条件", [参数列表]);


2.参数绑定方式

  • 普通占位符: ?

  • 命名占位符: :id(通常与字段同名)


3.执行其它非CURD语句

  • DB::statement("show tables",[参数列表]);


源代码

1.路由: web.php

<?php
use Illuminate\Support\Facades\Route;

//原生SQL查询
//查询
Route::get('admin/db/select', 'admin\DbController@select');

//新增
Route::get('admin/db/insert', 'admin\DbController@insert');

//更新
Route::get('admin/db/update/{id}', 'admin\DbController@update');

//删除
Route::get('admin/db/delete/{id}', 'admin\DbController@delete');

//其它
Route::get('admin/db/show/{table}', 'admin\DbController@show');

控制器: app/Http/Controllers/DbController.php

<?php

namespace App\Http\Controllers\admin;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class DbController
{
   // 查询
   public function select()
   {
//        $res = DB::select("SELECT * FROM stu WHERE age > ?", [50]);
       //使用命名占位符:推荐
       $res = DB::select("SELECT * FROM stu WHERE age > :age", ['age'=>50]);
       dump($res);
   }

   // 新增
   public function insert()
   {
       // 返回布尔值
       $res = DB::insert("INSERT stu SET name=:name,age=:age,salary=:salary", [
           'name'   => '杨过1',
           'age'    => 20,
           'salary' => 8888
       ]);
       var_dump($res);
       // 注意: DB::select()其实也能执行insert语句,但不要这样做
   }

   // 更新
   public function update(Request $request)
   {
       // 依赖注入请求对象获取路由变量
       $res = DB::update("UPDATE stu SET salary=:salary WHERE id=:id", [
           'salary'   => 12345,
           'id'    => $request->route('id'),
       ]);
       var_dump($res);
   }

   // 删除
   public function delete(Request $request)
   {
       // 依赖注入请求对象获取路由变量
       $id = $request->route('id');
       $res = DB::delete("DELETE FROM stu  WHERE id=:id", ['id'=>$id]);
       var_dump($res);
   }

   public function show(Request $request)
   {
       $table = $request->route('table');
       $res = DB::statement("DESC " . $table); // true
//        $res = DB::select("DESC " . $table); // 数组
       dump($res);
   }



}

数据表,请使用Admin.php 导入

-- Adminer 4.6.3 MySQL dump

SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';

DROP TABLE IF EXISTS `stu`;
CREATE TABLE `stu` (
 `id` int(5) NOT NULL AUTO_INCREMENT,
 `name` varchar(30) NOT NULL,
 `age` int(3) NOT NULL,
 `salary` float NOT NULL DEFAULT '3000',
 `create_time` int(10) NOT NULL DEFAULT '1541403008',
 `update_time` int(10) NOT NULL DEFAULT '1541403008',
 PRIMARY KEY (`id`),
 UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `stu` (`id`, `name`, `age`, `salary`, `create_time`, `update_time`) VALUES
(1, '灭绝师太', 26, 5677, 1541403008, 1541403008),
(2, '猪哥', 99, 4455, 1541403008, 1541403008),
(3, '西门大官人', 54, 9999, 1541403008, 1541403008),
(4, 'peter', 30, 12345, 1541403008, 1541403008),
(7, '张老师', 20, 3000, 1541403008, 1541403008),
(8, '小龙女', 30, 999, 1541403008, 1541403008);

-- 2018-11-14 07:31:30
Top