Laravel 5.2 四、.env 文件与模型操作
一、.env文件
.env 文件是应用的环境配置文件,在配置应用参数、数据库连接、缓存处理时都会使用这个文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | // 应用相关参数 APP_ENV=local APP_DEBUG=true //应用调试模式 APP_KEY=base64:hMYz0BMJDJARKgrmaV93YQY/p9SatnV8m0kT4LVJR5w= //应用key APP_URL=http: //localhost // 数据库连接参数 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravelblog DB_USERNAME=root DB_PASSWORD= DB_PREFIX= 'hd_' // 缓存相关参数 CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=sync // Redis 连接参数 REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 // 邮件相关参数 MAIL_DRIVER=smtp MAIL_HOST=mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null |
其中,有关这个 APP_KEY 的解释,在 config/app.php 中有如下注释:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | /* |-------------------------------------------------------------------------- | Encryption Key |-------------------------------------------------------------------------- | | This key is used by the Illuminate encrypter service and should be set | to a random, 32 character string, otherwise these encrypted strings | will not be safe. Please do this before deploying an application! | */ 'key' => env( 'APP_KEY' ), 'cipher' => 'AES-256-CBC' , |
key 键读取 .env 文件的 APP_KEY ,一般是 32 位的随机字符串。cipher 键决定 APP_KEY 的长度,一般是 AES-256-CBC (默认)表示 key 长 32 位字符,或者 AES-128-CBC 表示 16 位。
所以,为了保证会话和加密服务的安全, APP_KEY 必须设置,使用 Artisan 命令生成:
1 | php artisan key:generate |
这样,.env 文件中就会写入一个新的 APP_KEY 。
二、模型操作
Laravel 提供了 DB 类、查询构建器和 Elequent 模型这三个工具来实现数据库操作。
1. DB类
1 2 3 4 5 6 7 8 9 10 11 | // 插入 DB::insert( 'insert into hd_user(username, password) values(?, ?)' , [ 'admin' , 123456]); // 查询 DB::select( 'select * from hd_user where username = ?' , [ 'admin' ]); // 更新 DB::update( 'update hd_user set password= ? where username = ?' , [654321, 'admin' ]); // 删除 DB:: delete ( 'delete from hd_user where username = ?' , [ 'admin' ]); |
注:dd() 函数用于打印变量的详细信息,是 Laravel 的辅助函数。
2. 查询构建器
DB 类的 table 方法为给定表返回一个查询构建器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // 查询所有 DB::table( 'user' )->get(); // 查询多条 DB::table( 'user' )->where( 'age' , '>' , 20)->get(); // 查询一条 DB::table( 'user' )->where( 'age' , '>' , 20)->first(); // 查询特定字段 DB::table( 'user' )->select( 'name' , 'email as user_email' )->get(); // distinct() 方法去重复 $users = DB::table( 'user' )->distinct()->get(); |
3. Eloquent ORM
迷人的ORM,Laravel 的 Elequent 模型提供了简洁的数据库操作。比查询构建器更对象化,封装性更高。功能不如查询构建器强大,但可以使用查询构建器的方法。
1.创建模型
1 | php artisan make:model User |
2. 表名、主键、时间戳
表名:默认模型类名的复数作为表名,可以在模型类中定义 protected $table 属性来覆盖。
主键:默认主键名为"id",可以在模型类中定义 protected $primaryKey 属性来覆盖。
时间戳:默认会管理 created_at 和 updated_at 字段,可以在模型类中定义 public $timestamps 属性为 false 取消。
3.数据操作
在控制器方法中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | // 插入 $user = new User; $user ->username = 'admin' ; $user ->save(); // 查询 // 查询所有 User::get(); // 查询多条 User::where( 'age' , '>' , '20' )->get(); // 查询一条 user::find(1); // 更新 $user = User::find(1); // 查找主键为1的一条记录 $user ->username = 'new name' ; $user ->save(); // 或者用 update() 方法 // 删除 // 方法1.先获取记录再删除 User::find(1)-> delete (); // 方法2.通过主键直接删除 User::destroy(1, 2); // 方法3.通过 where 条件删除 User::where( 'username' , 'admin' )-> delete (); |
作者:mingc - 博客园
出处:http://www.cnblogs.com/mingc
声明:本文发表于博客园。如需转载,请注明出处,并在文章页面明显位置给出原文链接,否则保留追究其法律责任的权利。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· 在线客服系统 QPS 突破 240/秒,连接数突破 4000,日请求数接近1000万次,.NET 多
· C# 开发工具Visual Studio 介绍
· 在 Windows 10 上实现免密码 SSH 登录
· C#中如何使用异步编程