laravel 数据迁移与 Eloquent ORM的实现方法

 更新时间:2019年04月12日 09:58:16   作者:haoyq  
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);
 }

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

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

参考资料:数据库操作 —— 迁移Eloquent ORM —— 快速入门

相关文章

  • laravel实现查询最后执行的一条sql语句的方法

    laravel实现查询最后执行的一条sql语句的方法

    今天小编就为大家分享一篇laravel实现查询最后执行的一条sql语句的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • 批量去除PHP文件中bom的PHP代码

    批量去除PHP文件中bom的PHP代码

    今天搜索查看网页源码时为什么开头会有空行这个问题时找到的,批量去除PHP文件中bom的PHP代码
    2012-03-03
  • php 404错误页面实现代码

    php 404错误页面实现代码

    如果访问您站点的用户由于各种原因暂时出现无法访问页面的错误,如何给他一个友好的答复,并且你也知道发生了这个错误,看看下面这段程序,是用来定制404错误页面和发通知给网管。
    2009-06-06
  • symfony3.4中根据角色不同跳转不同页面功能

    symfony3.4中根据角色不同跳转不同页面功能

    这篇文章主要介绍了symfony3.4中根据角色不同跳转不同页面,在Symfony 3.4中,可以使用安全组件来实现控制不同角色跳转到不同页面的功能,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • php实现微信支付之企业付款

    php实现微信支付之企业付款

    这篇文章主要为大家详细介绍了php实现微信支付之企业付款功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例

    laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例

    这篇文章主要介绍了laravel框架实现为 Blade 模板引擎添加新文件扩展名操作,结合实例形式详细分析了laravel框架Blade 模板引擎添加新文件扩展名具体操作步骤与相关实现技巧,需要的朋友可以参考下
    2020-01-01
  • laravel开发中跨域的解决方案

    laravel开发中跨域的解决方案

    最近在开发中遇到了跨域的需求,通过查找相关资料找到了相关的解决方法了,所以下面这篇文章主要给大家介绍了关于laravel开发中跨域的解决方案,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10
  • PHP处理二进制数据的实现方法

    PHP处理二进制数据的实现方法

    下面小编就为大家带来一篇PHP处理二进制数据的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • PHP Yii框架之表单验证规则大全

    PHP Yii框架之表单验证规则大全

    Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程,本文给大家介绍php yii框架之表单验证规则大全,感兴趣的朋友一起学习吧
    2015-11-11
  • ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例

    ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例

    这篇文章主要介绍了ThinkPHP3.2.3框架实现执行原生SQL语句的方法,结合实例形式分析了thinkPHP3.2.3框架针对查询、添加、修改、删除等原生SQL操作相关实现技巧,需要的朋友可以参考下
    2019-04-04

最新评论