laravel数据迁移与Eloquent ORM的详细介绍

2022-10-11 21:45:46 159 0
魁首哥

本篇文章给大家带来的内容是关于 laravel 数据迁移与Eloquent ORM的详细介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

数据库可以说是后端开发最常用,也是最重要的部分。laravel 提供了很实用的 Eloquent ORM 模型类,简单、直观的与数据库进行交互。同时使用数据迁移管理数据库,可以与团队进行共享以及编辑。二者的更多介绍请查看下方的文档。

以下使用二者进行示例,需求是记录用户浏览记录。 请勿将本示例带入实际项目中,本文仅作示例。 实际项目根据需求进行记录,以及选择存储方式。

创建数据表

第一步当然是创建数据表了。使用 artisan 命令可以很方便的创建模型以及数据迁移。php artisan make:model Models/BrowseLog -m,-m 参数在创建模型的同时也创建了数据迁移文件。执行过上述命令后,新增了 app/Models/BrowseLog.php 以及 database/migrations/{now_date}_create_browse_logs_table.php 两个文件。

接下来编辑 {now_date}_create_browse_logs_table.php 来创建数据表

/**

* Run the migrations.

*

* @return void

*/

public function up()

{

Schema ::create(‘browse_logs’, function (Blueprint $table) {

$table->increments(‘id’);

$table->ipAddress(‘ip_addr’)->comment(‘ip 地址’);

$table->string(‘ Request _url’, 20)->comment(‘请求 url’);

$table-> char (‘city_name’, 10)->comment(‘根据 ip 获取城市名称’);

$table->timestamps();

});

DB::statement(“ALTER TABLE `browse_logs` comment’浏览记录表'”); // 表注释

}

代码如上,编辑完成后,执行命令 php artisan migrate 会将所有未执行迁移的数据表创建。如下

个人感觉,laravel 默认的数据类型值得商榷。例如 ipAddress(),数据格式为 varchar (45),其实可以使用 ip2long 转换成 int 进行存 储。timestamps() 也可以使用时间戳进行存储。当然 laravel 也提供了 访问器 & 修改器 方便维护。各位实际项目中自行选择。

定义 中间件

定义一个全局中间件,每一次请求都会被执行。执行 php artisan make: Middleware BrowseLog,创建了 app/Http/Middleware/BrowseLog.php 文件。

将创建好的中间件添加到 app/Http/ Kernel .php 中,如下

记录数据

最后在中间件中,记录数据到数据库即可,代码如下

/**

* Handle an incoming request .

*

* @param \Illuminate\Http\Request $request

* @param \ Closure $next

* @return mixed

*/

public function handle($request, Closure $next)

{

$log = new \App\Models\BrowseLog();

$log->ip_addr = $request->getClientIp();

$log->request_url = $request->path();

$log->city_name = get_city_by_ip();

$log->save();

return $next($request);

}

访问几个链接后,去数据库看下

数据写入正常,本次的示例就到此为止。

以上就是laravel数据迁移与Eloquent ORM的详细介绍(代码示例)的详细内容,更多请关注其它相关文章!

更多技巧请《转发 + 关注》哦!

收藏
分享
海报
0 条评论
159
上一篇:企业级Node框架——Egg之快速入门 下一篇:5种构建微服务架构的最佳技术

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码