5、连接数据库、新建数据表

lanmantech 2020-06-07

laravel提供了三种操作数据库的方式

1、DB facade (原始查找)   [f??sɑ?d]

2、查询构造器

3、Eloquent ORM     [?el?kw?nt]

连接数据库配置

1、config/database.php 保存连接数据库的账号密码

2、但是账号密码指向的是 app/.env 文件

3、所以修改数据地址,数据库名,密码等操作都在 .env 文件完成

4、修改完后重启下 php artisan serve

DB facade (原始查找)   [f??sɑ?d] 

使用DB facade前,先在控制器里进行引入

use Illuminate\Support\Facades\DB; //使用数据库前,先进行数据库的引入

控制器:增删改查

public function shujvku(){
    //查
    $shujv = DB::select(‘select * from news‘);
    var_dump($shujv); //输出数据,格式乱
    dd($shujv); //输出数据,格式整齐
    
    //增
    $bool = DB::insert(‘insert news(title,author) values(?,?)‘,[‘良哥‘,‘好好‘]);
    // 两个问好对应后面数组的两个值。若不加?,sql里面的值是写死的;后面数组里面的值可以动态更改
    // 增加成功后会返回一个布尔值
    var_dump($bool); //布尔值为true,即增加成功
    
    //改
    $gai = DB::update(‘update news set title=? where author=?‘,["名利阿斯蒂芬肯德基顺利打开附件",‘好好‘]);
    var_dump($gai); //修改成功后,返回修改了多少行
    
    //删
    $san = DB::delete(‘delete from news where Id>?‘,[10]);
    var_dump($san); //删除成功后,返回删除了多少行
    
}

配置好路由即可将数据的增删改查操作

查询构造器

使用查询构造器前,先在控制器里进行引入

use Illuminate\Support\Facades\DB; //使用数据库前,先进行数据库的引入

查询构造器:添加数据

public function index(){
    //查询构造器:增
    $bool = DB::table(‘news‘) -> insert([‘title‘ => ‘题目深刻的房间里‘ , ‘author‘ => ‘作者顺利打开附件‘]);
    var_dump($bool);  //插入数据,返回布尔值
    
    //插入成功后,返回该条记录的id
    $id = DB::table(‘news‘) -> insertGetId([‘title‘ => ‘题目深刻11111‘ , ‘author‘ => ‘作者顺利打开11111‘]);
    var_dump($id);  //插入数据,成功后,返回该条记录的id
    
    //插入多条数据
    $duo = DB::table(‘news‘) -> insert([
        [‘title‘ => ‘111111111111111‘ , ‘author‘ => ‘1111111111111111‘],
        [‘title‘ => ‘22222222222222‘ , ‘author‘ => ‘22222222222222222‘]
    ]);
    var_dump($duo);  //插入后返回布尔值
}

查询构造器:更新数据

public function index(){
    //查询构造器:更新数据
    $num = DB::table(‘news‘)
        ->where(‘Id‘,14)
        ->update([‘title‘ => ‘更新11111111‘]);
    var_dump($num);  //成功后返回影响的行数
}

对某些字段进行自增自减,id除外

public function index(){
    //给某个字段的内容全部自增1
    $num1 = DB::table(‘news‘) -> increment(‘count‘); //不能对Id进行自增
    //给某个字段的内容全部自增3
    $num2 = DB::table(‘news‘) -> increment(‘count‘,3);
    var_dump($num1,$num2); //返回受影响的行数
        
    //给某个字段的内容全部自减1
    $num3 = DB::table(‘news‘) -> decrement(‘count‘); //不能对Id进行自减
    //给某个字段的内容全部自减3
    $num4 = DB::table(‘news‘) -> decrement(‘count‘,3);
    var_dump($num1,$num2); //返回受影响的行数
}

给单独某一条记录的字段进行自增或自减

public function index(){
    //给单独某一条记录的字段进行自增或自减
    $num1 = DB::table(‘news‘)
    ->where(‘Id‘,14)  //查找id为14的那一行
    -> increment(‘author‘,3); //将author字段自增3
    var_dump($num1);  //返回受影响的行数
}

给某行记录进行自增的同时,对其他字段进行更新

public function index(){
    $num2 = DB::table(‘news‘)
    ->where(‘Id‘,14)  //查找id为14的那一行
    -> increment(‘author‘,3,[‘title‘ => ‘自增的同时修改‘]); //若要更新多个字段,数组里面再嵌套数组
    var_dump($num2);  //返回受影响的行数
}

查询构造器:删除数据

public function index(){
    //查询构造器:删除数据
    $num3 = DB::table(‘news‘)
    ->where(‘Id‘,14)  //删除某条记录
    ->delete();
    var_dump($num3); //返回受影响的行数
}

删除多行数据,删除  >=x  的数据

public function index(){
    //查询构造器:删除数据
    $num3 = DB::table(‘news‘)
    ->where(‘Id‘,‘>=‘,4)  //删除Id>=4的记录
    ->delete();
    var_dump($num3); //返回受影响的行数
}

truncate,删除整个表     [tr???ke?t]

DB::table(‘news‘)->truncate();  //删除某个表,不会返回任何数据

查询构造器:查询数据

查询数据表的所有内容

public function index(){
    // 查询表的所有数据
    $num4 = DB::table(‘news‘)->get(); //查询news表的所有数据
    dd($num4); //返回结果集
}

查询某一条数据,或某一个范围的数据

public function index(){
    //查询某一条数据,或某一个范围的数据
    $data = DB::table(‘news‘)
    ->where(‘Id‘,‘>‘,3)  //查询Id>3的数据
    ->get();
    dd($data);
}

查询  符合多个条件的数据(可以试着做登陆验证)

public function index(){
    //查询  符合多个条件的数据(可以试着做登陆验证)
    $deng = DB::table(‘news‘)
    ->whereRaw(‘Id >= ? and title=?‘,[4,2])  //id>=4,title=2的同一条数据
    ->get();
    dd($deng);
}

查询第一条数据

public function index(){
    //first:查询第一条数据,默认正序
    $num5 = DB::table(‘news‘)->first();
    //first:查询第一条数据,逆序方式
    $num6 = DB::table(‘news‘)->orderBy(‘Id‘,‘desc‘)->first();
    dd($num5,$num6);
}

查询表的某一个字段的所有内容

public function index(){
    //pluck:查询表的某一个字段的所有内容
    $num6 = DB::table(‘news‘)
    ->pluck(‘title‘);  //查询news表的title字段
    dd($num6);
}

查询一个表的多个字段

public function index(){
    //select:查询一个表的多个字段
    $num8 = DB::table(‘news‘)
    ->select(‘title‘,‘author‘,‘source‘)
    ->get();
    dd($num8);
}

chunk:当数据有上万条时,指定每次查询多少条

public function index(){
    //chunk:当数据有上万条时,指定每次查询多少条
    DB::table(‘news‘)
    -> orderBy(‘Id‘,‘asc‘)  //使用chunk时,必须使用orderBy子句。顺序为asc,逆序为desc
    -> chunk (2,function($count){  //每次查询两条数据,知道数据查完
        echo ‘<pre>‘;  //将数据整齐格式化
        var_dump($count);
    });
}

相关推荐