laravel 数据迁移与 Eloquent ORM的实现方法
发布:smiling 来源: PHP粉丝网 添加日期:2021-11-16 21:51:04 浏览: 评论:0
laravel 提供了很实用的 Eloquent ORM 模型类,简单、直观的与数据库进行交互。同时使用数据迁移管理数据库,可以与团队进行共享以及编辑,本文详细的介绍了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);
- }
访问几个链接后,去数据库看下
数据写入正常,本次的示例就到此为止。
Tags: laravel数据迁移 Eloquent ORM
相关文章
- ·Laravel 5框架学习之Eloquent 关系(2021-05-22)
- ·Laravel5.7 Eloquent ORM快速入门详解(2021-11-16)
- ·Laravel Eloquent ORM 多条件查询的例子(2021-12-28)
- ·Laravel Eloquent ORM 实现查询表中指定的字段(2022-01-08)
- ·使用laravel的Eloquent模型如何获取数据库的指定列(2022-01-08)
- ·laravel 之 Eloquent 模型修改器和序列化示例(2022-01-08)
- ·yii2的ActiveForm表单使用的方法介绍(2020-02-15)
- ·Yii框架form表单用法实例(2021-05-02)
- ·YII2.0之Activeform表单组件用法实例(2021-07-05)
- ·Laravel ORM对Model::find方法进行缓存示例详解(2021-09-05)
- ·laravel ORM关联关系中的 with和whereHas用法(2022-01-08)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)