• 技术文章 >php框架 >Laravel

    laravel数据迁移与Eloquent ORM的详细介绍(代码示例)

    不言不言2019-01-08 11:34:17转载2437

    本篇文章给大家带来的内容是关于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 会将所有未执行迁移的数据表创建。如下

    8701366-19834c241b84edd4.png

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

    定义中间件

    定义一个全局中间件,每一次请求都会被执行。执行 php artisan make:middleware BrowseLog,创建了 app/Http/Middleware/BrowseLog.php 文件。
    将创建好的中间件添加到 app/Http/Kernel.php 中,如下

    8701366-19834c241b84edd4.png

    记录数据

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

    /**
         * 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);
        }

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

    8701366-64df96b2a1bf0cd6.png

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

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

    声明:本文转载于:segmentfault,如有侵犯,请联系admin@php.cn删除
    专题推荐:laravel php
    上一篇:Laravel框架中Pipeline的解析(代码示例) 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面_php技巧• 详解PHP的Laravel框架中Eloquent对象关系映射使用_php技巧• ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼_php技巧• [麦先生]初学Laravel框架与ThinkPHP的不同(1) - 麦先生• php Laravel框架学习(一) 之 建立数据库并填充测试数据• ThinkPHP、ZF2、Yaf、Laravel框架路由对比• PHP也做好好多年了,最近在看laravel框架,但是面对如此丰富的文档,我却不知道在讲什么,完全看不懂,请问我是哪里出了问题?• mac中laravel框架的public文件夹无法访问?
    1/1

    PHP中文网