1. <output id="hzk7v"><pre id="hzk7v"><address id="hzk7v"></address></pre></output>
      <output id="hzk7v"></output>
    2. <nav id="hzk7v"><i id="hzk7v"><em id="hzk7v"></em></i></nav>
    3. <listing id="hzk7v"><delect id="hzk7v"><em id="hzk7v"></em></delect></listing>

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

       更新时间£º2019年04月12日 09:58:16   作者£ºhaoyq   我要评论

      laravel 提供了很实用的 Eloquent ORM 模型类£¬简单¡¢直观的与数据库进行交互¡£同时使用数据迁移管理数据库£¬可以与团队进行共享以及编辑£¬本文详细的介绍了laravel 数据迁移与 Eloquent ORM的实现方法£¬?#34892;?#36259;的可以了解一下

      导语

      数据库可以说是后端开发最常用£¬也是最重要的部分¡£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 ?#21019;?#24314;数据表

      /**
        * 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 默认的数据类型?#26723;?#21830;榷¡£例如 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);
       }

      访?#22987;?#20010;链接后£¬去数据库看下

      数据写入正常£¬本次的示例就到此为止¡£

      参考资料£º数据库操作 ¡ª¡ª 迁移¡¢Eloquent ORM ¡ª¡ª 快速入门¡£

      相关文章

      最新评论

      3dÊÔ»úºÅÖвÊÍø

        1. <output id="hzk7v"><pre id="hzk7v"><address id="hzk7v"></address></pre></output>
          <output id="hzk7v"></output>
        2. <nav id="hzk7v"><i id="hzk7v"><em id="hzk7v"></em></i></nav>
        3. <listing id="hzk7v"><delect id="hzk7v"><em id="hzk7v"></em></delect></listing>

            1. <output id="hzk7v"><pre id="hzk7v"><address id="hzk7v"></address></pre></output>
              <output id="hzk7v"></output>
            2. <nav id="hzk7v"><i id="hzk7v"><em id="hzk7v"></em></i></nav>
            3. <listing id="hzk7v"><delect id="hzk7v"><em id="hzk7v"></em></delect></listing>