laravel 数据迁移与 Eloquent ORM

导语

数据库能够说是后端开发最经常使用,也是最重要的部分。laravel 提供了很实用的 Eloquent ORM 模型类,简单、直观的与数据库进行交互。同时使用数据迁移管理数据库,能够与团队进行共享以及编辑。两者的更多介绍请查看下方的文档。
如下使用两者进行示例,需求是记录用户浏览记录。请勿将本示例带入实际项目中,本文仅做示例。实际项目根据需求进行记录,以及选择存储方式。php

建立数据表

第一步固然是建立数据表了。使用 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 来建立数据表html

/**
     * 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

数据迁移

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

定义中间件

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

添加中间件

记录数据

最后在中间件中,记录数据到数据库便可,代码以下app

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

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

数据库查询

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


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

相关文章
相关标签/搜索