ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
--- ## 1. laravel 的数据库如何创建 > 说最基本的创建命令 文件会在 databases 下面 php artisan make:migration create_order_table ## 2. laravel 创建 seed php artisan make:seed UserSeeder > 然后我们需要写入 sedd 写入到数据库中 seed 目录下面面的文件 public function run() { \Illuminate\Support\Facades\DB::table('users')->insert([ 'name' => 'white', 'email' => '986247535@qq.com', 'password' => '123456', 'created_at' => \Carbon\Carbon::now()->toDateTimeString(), 'updated_at' => \Carbon\Carbon::now()->toDateTimeString(), ]); } ## 3. laravel 三种数据库操作 ### 3.1 直接使用原生 SQL $user = DB::select('select * from users'); $users = DB::select('select * from users where id = ?', [1]); $users2 = DB::select('select * from users where id = :id', ['id' => 1]); $insert = DB::select('insert into users(name, password, email) value (?, ? ,?)', ['zj', '123', 'zj@168.com']); $update = DB::select('update users set name = ?, email = ? , password = ? where id = ?', ['aa','122@qq.com', '123456', 2]); $delete = DB::select('delete from users where id = ?' ,[2]); ### 3.2 使用 laravel 查询构造器 //查询构造器 $getUser = DB::table('users')->where('id', 1)->get(); //返回的是一个 collection 集合 $findUser = DB::table('users')->find(1); //取出某一条,用ID获取单个对象 $insertUser = DB::table('users')->insert(['name' => 'zj', 'password' => '123', 'email' => '1234@qq.com']); $firstUser = DB::table('users')->where('id', 1)->first(); //返回第一条数据,第一个对象 $valueUser = DB::table('users')->value('name'); //取到某一个 value 值 $pluckUser = DB::table('users')->pluck('name')->toArray(); // 取到某一列,并返回数据 $pageUser = DB::table('users')->paginate(2); //返回分页 > 注意在分页中的数据说明: #total: 3 //全部有多少个 #lastPage: 2 //最后一页总共几页 #items: Illuminate\Support\Collection {#285 ▶} //当前页列表数据拿到多少个 #perPage: 2 // 一页多少个 #currentPage: 1 //当前路径 #path: "http://laravel.test/home/dbTest" //当前页路径 #query: [] //查询的参数 #fragment: null //URL锚点 #pageName: "page" //参数名 +onEachSide: 3 //左右两边各显示多少个 #options: array:2 [▼ "path" => "http://laravel.test/home/dbTest" "pageName" => "page" ] > 另外一种查询分页的效果 `适用与查询非常慢的表例如几十万的上百万的数据下可以用 simple` $simplePageUser = DB::table('users')->simplePaginate(2); > 两个分页之间的区别: 在simplePaginate 中没有 total ,多了一个 `hasMore` 用来确认是否有下一页 --- > #### 查询构造器的统计方法 //统计数学方法 $maxUser = DB::table('users')->max('id'); $minUser = DB::table('users')->min('id'); $avgUser = DB::table('users')->avg('id'); $countUser = DB::table('users')->count('id'); $sumUser = DB::table('users')->sum('id'); $existsUser = DB::table('users')->where('id',1)->exists('id'); --- > ### 查询构造器的 `where` 用法 $dumpUser = DB::table('users')->where('id', '>' ,1)->dump(); //打印SQL > 注意: 操作符可以是 `>` `<` `>=` `<=` `<>` `!=` --- > 另外 `like` 的用法 $likeUser = DB::table('users')->where('name', 'like' ,'w%')->dump(); //打印SQL $orUser = DB::table('users')->where('id', '>', 1)->orWhere('name', 'like', 'z%')->dump(); //打印SQL > #### 复制查询 where (使用闭包来查询) Builder > 有时候我们需要查询复杂的语句例如下面的这句sql select * from users where id > 1 and (name like 'zj' or email like 'z%'); $complexWhereUser = DB::table('users')->where('id', '>', 1)->where(function (Builder $query){ $query->where('email', 'like', '123@%') ->orWhere('name', 'like', 'z%'); })->dump(); --- DB::table('users')->whereIn('id', [1,2])->dump(); DB::table('users')->whereNotIn('id', [1,2])->dump(); DB::table('users')->whereNotNull('id', [1,2])->dump(); DB::table('users')->whereColumn('name', 'email')->dump(); //一列的比较 > #### 其他 DML 操作 `insert` `update` insert() insertOrIgnore() //忽略插入错误,例如主键冲突 insertGetId() //新增后拿到ID Hash:make('123') //加密hash --- update() updateOrInsert() //当数据不存在就插入否则更新这条数据 ### 3.3 使用 ORM