数据库配置
Laravel 框架的数据库的配置代码在 config/database.php 文件内实现,而 database.php 的默认实现是读取 .env 文件的配置。将数据库参数抽取至 .env 文件更方便在切换环境时调整数据库配置
database.php 文件中数据库配置的代码
'mysql' => ['driver' => 'mysql','host' => env('DB_HOST', '127.0.0.1'),'port' => env('DB_PORT', '3306'),'database' => env('DB_DATABASE', 'forge'),'username' => env('DB_USERNAME', 'forge'),'password' => env('DB_PASSWORD', ''),'unix_socket' => env('DB_SOCKET', ''),'charset' => 'utf8mb4','collation' => 'utf8mb4_unicode_ci','prefix' => '',// 严格模式: MySQL自身对数据进行严格的校验(格式、长度、类型等)'strict' => true,'engine' => null,],
.env 文件中数据库配置的代码
DB_CONNECTION=mysqlDB_HOST=数据库服务器域名DB_PORT=端口号DB_DATABASE=数据库名DB_USERNAME=用户名DB_PASSWORD=密码
数据库操作
Laraval 架构使用 Illuminate\Support\Facades\DB 门面来操作数据库。该门面在 config/app.php 中已经定义别名 DB,可在项目中直接使用
增加数据
insert(): 可以同时添加一条或多条, 返回布尔值insertGetId(): 只能添加一条数据, 返回自增的idpublic function createAction() {// 定义 关联操作的数据表$db = DB::table('007_news');// 返回插入结果,支持多条数据// $result = $db -> insert([// [// 'id' => 01,// 'title' => "知识超萌正式进入开发状态",// 'cat' => 1,// ],// [// 'id' => 02,// 'title' => "超萌优选正式进入开发状态",// 'cat' => 1,// ],// ]);// 返回自增加的id, 只支持单条数据$result = $db -> insertGetId([// 'id' => 01, // 不能指定id值, 会自动插入到表中最后id的后面'title' => "超萌名片正式进入开发状态",'cat' => 1,]);dd($result);}
修改数据
update(): 可以修改整个记录中的全部字段increment: 修改数字字段的数值,递增decrement: 修改数字字段的数值,递减public function updateAction() {$db = DB::table('007_news');/**查询id为181的行, 修改title的数据* where 指定查询条件,* update 更新指定数据, 返回值为 "生效的行数(rows affected)"*/$result = $db -> where('id', '<', '4') -> update(['title' => '超萌名片即将进入开发阶段',]);// dd($result);/**查询id为3的行, 对cat(数字类型)进行 +5 操作* 第二个参数不填时, 则增加值为 1* decrement用法类似*/$result = $db -> where('id', '3') -> increment('cat', 5);dd($result);}
查询数据
Where语法: -> where(字段, 运算符, 值) 如果运算符为
=号, 可省略不写where方法之后继续调用where方法 ``` // 这个语法是 并且 关系, 即多个 where 同时生效 -> where() -> where() -> where() …
// 这个语法是 或者 关系, 即多个 where 只需要满足其中一个 // orWhere 方法的参数 与where 方法一致 -> where() -> orWhrer() -> orWhere() …
- 获取单行数据
// first函数的返回值是个对象(表示某行的全部数据) DB::table(‘007_news’) -> where(‘id’, ‘1’) -> first();
- 获取具体的值
// value函数的返回值是个具体数据类型 (表示某行的某个数据) DB::table(‘007_news’) -> where(‘id’, ‘1’) -> value(‘name’);
- 获取指定字段的数据(多个字段)
// 查询users表中内每行数据的name与email字段 DB::table(‘users’) -> select(‘name’, ‘email’) -> get();
// 输出数据时, name将以 user_name 的别名形式输出 DB::table(‘users’) -> select(‘name as user_name’) -> get();
- 排序操作
// 按照指定的字段进行特定规则的排序// desc表示降序、 asc表示升序DB::table(‘users’) -> orderBy(‘age’, ‘desc’) -> get();
- 分页操作
// limit: 表示限制输出的数据条数// offset: 表示偏移量(从哪起取数据,从0起算)DB::table(‘users’) -> limit(3) -> offset(2) -> get();
<a name="9mZbt"></a>
## 删除数据
> 物理删除可以通过 `delete` 函数和 `truncate` 函数来实现
- `delete` : 表示删除记录
- `truncate` : 表示清空整个数据表
在删除中, 有两种方式:
- 物理删除(本质是删除数据)
- 逻辑删除(本质是修改数据)
<a name="e25f34a3"></a>
## 执行SQL语句
- 执行任意的 `insert`, `update`, `delete` 语句 【影响使用记录的语句使用 `statement` 语法】
DB::statement(“insert into users values(‘zed’, ‘121722’)”);
- 执行任意的 `select` 语句 【不影响使用记录的语句使用 `select` 语法】
DB::select(“select * from users”); ```
