ホームページ >PHPフレームワーク >Laravel >Laravelデータ移行とEloquent ORMの詳細な紹介(コード例)

Laravelデータ移行とEloquent ORMの詳細な紹介(コード例)

不言
不言転載
2019-01-08 11:34:173654ブラウズ

この記事では、laravel データ移行と Eloquent ORM についての詳細な紹介 (コード例) を紹介します。必要な方は参考にしていただければ幸いです。

データベースはバックエンド開発で最も一般的に使用され、重要な部分であると言えます。 Laravel は、データベースを簡単かつ直観的に操作するための非常に実用的な Eloquent ORM モデル クラスを提供します。同時に、データ移行を使用してデータベースを管理し、チームで共有および編集できます。両方の詳細については、以下のドキュメントを参照してください。
以下では、両方を例として使用します。要件は、ユーザーの閲覧記録を記録することです。 この例を実際のプロジェクトに持ち込まないでください。この記事は単なる例です。 実際のプロジェクトは要件に従って記録され、保存方法が選択されます。

データ テーブルの作成

最初のステップは、もちろんデータ テーブルを作成することです。アーティザンコマンドを使用するとモデルの作成やデータの移行が簡単に行えます。 php 職人 make:model Models/BrowseLog -m、-m パラメーターは、モデルの作成中にデータ移行ファイルも作成します。上記のコマンドを実行すると、app/Models/BrowseLog.php と database/migrations/{now_date}_create_browse_logs_table.php の 2 つの新しいファイルが追加されました。
次に、{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 職人移行を実行して、まだ作成されていないすべてのデータ テーブルを作成します。移行しました。以下のように

Laravelデータ移行とEloquent ORMの詳細な紹介(コード例)

個人的には、laravelのデフォルトのデータ型には疑問があります。たとえば、ipAddress() のデータ形式は varchar(45) ですが、実際には ip2long を使用して int に変換して保存できます。 timestamps() は、保存にタイムスタンプを使用することもできます。もちろん、laravel はメンテナンスを容易にするアクセサとモディファイアも提供します。実際のプロジェクトではご自身で選択していただけます。

ミドルウェアの定義

リクエストごとに実行されるグローバル ミドルウェアを定義します。 php 職人 make:middleware BrowseLog を実行して、app/Http/Middleware/BrowseLog.php ファイルを作成します。

作成したミドルウェアをapp/Http/Kernel.phpに以下のように追加します

Laravelデータ移行とEloquent ORMの詳細な紹介(コード例)

レコードデータ

最後に、ミドルウェアでデータをデータベースに記録します。コードは次のとおりです。

/**
     * 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);
    }
いくつかのリンクにアクセスした後、データベースに移動して確認します

Laravelデータ移行とEloquent ORMの詳細な紹介(コード例)

データの書き込みは正常です。この例はここで終了です。

以上がLaravelデータ移行とEloquent ORMの詳細な紹介(コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。