Laravel 操作数据库DB facade(原始查找) 、查询构造器、Eloquent ORM

本文详细介绍了Laravel框架中的数据库操作,包括DB Facade的使用,如如何连接数据库和实现增删改查;查询构造器的介绍及其在数据操作中的应用,特别是聚合函数的运用;最后深入探讨了Eloquent ORM,从模型建立、数据查询,到数据的新增、更新和删除,展示了ORM的便捷性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.DB facade

连接数据库操作文件 

    config/database.php

    .env

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

DB facade 实现增删改查

class StudentController extends Controller
{
    public function test1()
    {
        查询,返回数值
       $students = DB::select('select * from student');
       dd($students);

       新增,返回是否成功
        $bool = DB::insert('insert into student(name,age,create_at,update_at) value(?,?,?,?)', ['sean',18,20342341,2341314]);
        var_dump($bool);

       修改,返回修改行数
        $num = DB::update('update student set age=? where name=?',[19,'yci']);
        var_dump($num);

        删除,返回修改行数
        $num = DB::delete('delete from student where id>?',[1]);
        var_dump($num);
    }
}

二.查询构造器

    1.查询构造器简介

            提供接口来建立及执行数据库查找语法。
            使用PDO参数绑定,以保护应用程序免于SQL注入,因此传入的参数不需要额外的转义特殊字符
            基本满足所有的数据库操作,在所有支持的数据库系统都可以执行。

    2.使用查询构造器进行数据的增删改查

            
//新增数据
public function query1()
{
    //新增数据,返回bool    $bool = DB::table('student')->insert(
        [   'name'=>'imooc',
            'age'=>18,
            'create_at'=>231230,
            'update_at'=>13212]
    );
    var_dump($bool);
    //在新增数据时得到自增id
    $id=DB::table('student')->insertGetId(
        [   'name'=>'imooc2',
            'age'=>18,
            'create_at'=>231230,
            'update_at'=>132232]
    );
    var_dump($id);
    //一次新增多条数据,返回bool    $bool = DB::table('student')->insert([
        [   'name'=>'imooc',
            'age'=>18,
            'create_at'=>231230,
            'update_at'=>13212]  ,

        [   'name'=>'imooc2',
            'age'=>18,
            'create_at'=>231230,
            'update_at'=>132232]
    ]);
    var_dump($bool);
}
//更新数据
public function query2()
{
    //返回修改行数
    $num = DB::table('student')
        ->where('id',12)
        ->update(['age'=>20]);
    var_dump($num);

    //自增(默认自增1),返回修改行数
    $num=DB::table('student')->increment('age');
    //自增3
    $num=DB::table('student')->increment('age',3);
    //自减
    $num=DB::table('student')->decrement('age',3);
    var_dump($num);
    
    $num=DB::table('student')
        ->where('id',12)
        ->increment('age',3,['name'=>'iimooc']);
}
//删除数据
public function query3()
{
    //删除数据
    $num = DB::table('student')
        ->where('id','>=',3)
        ->delete();
    var_dump($num);

    //清空数据表,不返回任何值
    DB::table('student')->truncate();
}
//查询数据
public function query4()
{
    //get返回所有数据
    $students =DB::table('student')->get();
    dd($students);

    //first获取结果集第一条数据
    $student =DB::table('student')
        ->orderBy('id','desc')
        ->frist();
    dd($student);

    //where单条件查询
    $students =DB::table('student')
        ->where('id','>=',1)
        ->get();
    dd($students);

    //where多条件查询
    $students=DB::tabel('student')
        ->whereRaw('id>=? and age>=?',[1,18])
        ->get();
    dd($students);

    //pluck返回结果集中指定的字段
    $names=DB::table('student')
        ->pluck('name');
    dd($names);

    //lists返回结果集中指定的字段并可以指定下标,pluck对比
    $names=DB::table('student')
        ->lists('name','id');
    dd($names);

    //select查询部分信息
    $students=DB::table('student')
        ->select('name','age','create_at');
    dd($students);

    //chunk数据太多,分段查找
    echo '<pre>';
    DB::table('student')->chunk(50,function($students){
       var_dump($students);
       if(条件){
           //当满足条件时,不在获得数据
           return false;
       }
    });

}

    3.查询构造器中的聚合函数

//聚合函数的使用
public function query5()
{
    //count(),max(),min(),avg(),sum();
   
    $num = DB::tabel('student')->count();
    var_dump($num);

    $max=DB::table('student')->max('age');
    var_dump($max);
}

三.Eloquent ORM

    1.ORM简介、模型的建立及查询数据。
        ORM是ActiveRecord实现,用来实现数据库操作

        每个数据表都有一个与之对应的“模型(Model)”用于数据的交互

        模型的建立:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/5/25
 * Time: 14:18
 */
namespace App;
use Illuminate\Database\Eloquent\Model;

class Student extends Model
{
    //指定表名
    protected $table ='student';
    //指定主键
    protected $primaryKey = 'id';
}
            查询数据
public function orm1()
{
    //all查询表的所有记录,返回一个集合
    $students=Student::all();
    dd($students);

    //find根据主键进行查询
    $student = Student::find(1);
    dd($student);

    //查询构造器在ORM中的使用
    $students = Student::get();
    dd($students);

    $student =Student::where('id','>','1')
        ->orderBy('age','desc')
        ->frist();
    dd($student);
}

    2.ORM新增数据、自定义时间戳及批量赋值。
        (1)通过模型新增数据(涉及到自定义时间戳)
public function orm2()
{
    //使用模型新增数据
    //首先得到模型
    $student = new Student();
    $student->name = 'sean2';
    $student->age=48;
    $bool = $student->save();
    dd($bool);
}

            在模型中设置

//关闭save方法生成的自动时间戳  默认生成 created_at updated_at
public $timestamps =  false;       

    (2)使用模型的Create方法新增数据(涉及到批量赋值)
        

//create新增数据
public function orm3()
{
    //默认不允许批量赋值
    Student::create(['name'=>'mooc', 'age'=>18]);
}

        在模型中设置

//指定允许批量赋值的字段
protected $fillable =['name','age'];
//指定不允许批量赋值的字段
protected $guarded =['id'];
    3.ORM修改数据、删除数据。
//更新数据
public function orm4()
{
    //通过模型更新数据
    $student =Student::find(1);
    $student->name='kitty';
    $bool =$student->save();
    var_dump($bool);
    //结合查询语句批量更新
    Student::where('id','>',2)->update(['age'=>41]);
}

//删除数据
public function orm5()
{
    //通过模型删除
    $student =Student::find(2);
    $bool=$student->delete();
    var_dump($bool);
    //通过主键删除一个或多个数据
    Student::destroy(1);
    Student::destroy(1,3,5);
    //删除指定条件的
    Student::where('id','>',2)->delete();
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值