---
## 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