目次
美しい構造
データベース接続レイヤー
クエリ構築層は、クエリ コンストラクターと (文法) ジェネレーターで構成され、アプリケーション層と最下層の間のスムーズなアクセス インターフェイスを提供します。開発者にとって、クエリは確実にエレガントな形式で作成できます。最新のフレームワークはそのような機能を提供しますが、PHP の優れた機能の多くを使用してそれを実装するフレームワークは Laravel のようなものはほとんどありません。
アプリケーション層
ホームページ バックエンド開発 PHPチュートリアル laravel 学習ノート - データとモデルのスターター

laravel 学習ノート - データとモデルのスターター

Jun 20, 2016 pm 12:28 PM

前回の記事「Laravel 学習ノート - 魔法のサービスコンテナ」から 1 年が経過しましたが、データベース部分の記事はいつリリースされるのかという質問を多くの方からいただきました。実は書きたくないのではなく、当時はほとんどの機能が使われていなかったため、メモという形で渡すことができずに書けなかったのです。 1 年が経ち、laravel をさまざまな種類のプロジェクトで使用するようになり、データベースのコンポーネントについてはほぼ完全に理解できるようになりました。学習ノートのシーケンスの重要なリンクの 1 つであるデータベース部分を改善する時期が来ました。

Laravel にはルーティング、コンテナ、Eloquent ORM という 3 つの宝物があります。Eloquent ORM は実際には Laravel フレームワーク データベース コンポーネントの一部であり、最も重要で一般的に使用されるものでもあります。 Laravel データベース コンポーネントのことを、Eloquent ORM と呼ぶことがよくあります。もちろん、データベースの記事は包括的に説明する必要があり、それはこの分野で問題に遭遇した友人の理解を助け、助けることになります。

データベースコンポーネントは、いくつかの要素にのみ依存する比較的独立したコンポーネントです。composer を通じてインストールした場合、laravel フレームワークをインストールしなくても、このコンポーネントのすべての機能をどのプロジェクトでも使用できます。具体的な使用方法は、github ホームページから入手できます: https://github.com/illuminate/database

スペースが限られており、普段はとても忙しいため、データベース部分を分割します。この記事を含め、多数の記事が存在します。この記事では、概要と記事のプレビューとして、データベース コンポーネント全体の構成について大まかに説明します。

美しい構造

Laravel データベースコンポーネントには明確な階層構造がありますが、明確な説明はありませんが、ドキュメントの構造とコードから明らかです。もちろん、Eloquent ORM が最も大きな割合を占めているため、2 ページを使ってこれに焦点を当てて説明します。

コンポーネントは大きく 3 つの層に分かれています。

  • データベース接続層
  • クエリ構築層
  • アプリケーション層

各レイヤーに含まれる内容と、それらがドキュメントのどの部分に対応するかを見てみましょう:

データベース接続レイヤー

データベース接続レイヤーは、データベース コンポーネント全体の基礎となります。これは自明のことですが、この部分は実際には ドキュメント に基づいて、次の主要な機能を提供します。

詳細 直感的で使いやすいトランザクションを実現
  • 読み取りと書き込みの分離機能
  • 複数のデータベースドライバーの互換性と切り替え
  • データベースイベント
  • この部分の機能 Facade を通じて (DB クラスを) すぐに呼び出すことができることは、明らかに、PDO または MySQLi を使用したことがある人なら誰でも、パラメーター バインディングと SQL 前処理関数をすぐに使い始めることができると説明されています。イベント処理を容易にするために、この部分では、追加、削除、変更、確認の 4 つの操作それぞれのメソッドがカプセル化されています。実際、呼び出しメソッドは同じです (どちらもカプセル化された PDO クラスと PDOStatement クラスのメソッドです)。生成される結果の種類のみが異なります。

この層は非常に低レベルです。データベースを操作するために SQL を直接記述する必要がある人は、ほとんどの場合、この層を介してアクセスできます (ただし、トランザクションは非常に一般的に使用されます)。それについては後の記事で説明します)到着)。最下層とは、データベース コンポーネントの背後にあるすべての機能がこの層を使用して実装されることを意味するため、この層を理解する必要があることに注意してください。

PDO を理解することが重要です。最新のフレームワークのデータベース部分は、基本的に PDO に基づいて実装されます。 PHP 5.3 以降のバージョンを使用していて、PDO を一度も使用したことがない、あるいは理解したことがない PHPer は、PDO が PHP 5.1 以降の組み込み拡張機能であり、PHP と一緒にリリースされたことを知っておく必要があります。

この部分は別記事では紹介せず、次の記事と併せて説明します。

クエリ構築層

クエリ構築層は、クエリ コンストラクターと (文法) ジェネレーターで構成され、アプリケーション層と最下層の間のスムーズなアクセス インターフェイスを提供します。開発者にとって、クエリは確実にエレガントな形式で作成できます。最新のフレームワークはそのような機能を提供しますが、PHP の優れた機能の多くを使用してそれを実装するフレームワークは Laravel のようなものはほとんどありません。

次の方法でクエリを実行できます:

最後に、次のような SQL が生成されます:
<?php$query = DB::table('users')->where('score', '>', 0)                           ->where(function (Builder $query) {                               $query->where('code', 'foo')                                     ->orWhere('name', 'like', 'Anvi%');                           })->skip(1)                           ->take(5)                           ->get();
ログイン後にコピー

ご覧のとおり、クエリ構築層 非常に直観的なアクセス方法を提供するため、SQL ステートメントの構築時にエラーが発生する可能性が大幅に減少します。また、メソッドを通じてアクセスされるため、特定のタイプのクエリ メソッド (この機能については後述します) を簡単にカプセル化できます。開発効率を向上させます。
SELECT * FROM users WHERE score > 0 AND (code = 'foo' OR 'name' LIKE 'Anvi%') OFFSET 1 LIMIT 5;
ログイン後にコピー

使用される where や groupBy などのメソッドはすべてクエリ コンストラクターによって提供されるメソッドであることを常に覚えておいてください。これは、どのメソッドがどの層からのもので、どのクラス インスタンス オブジェクトが提供されるのかを開発中に明確にする必要があります。不要なエラーを回避するのに役立ちます。これについては Eloqent の記事で焦点を当てます。

クエリ ビルダーは洗練されたアクセス方法を提供し、SQL ステートメントの最終出力は (文法) ジェネレーターであり、現在選択されているデータベース ドライバーに基づいて対応する SQL ステートメントを生成し、最終的にクエリ ビルダーに返します。バインディング パラメータを使用してデータベース接続層を呼び出し、クエリ結果を返すのは簡単です。

実際には、データベース コンポーネントには 2 つのクエリ コンストラクターがあり、1 つはクエリ構築層によって提供される基本的なネイティブ クエリ コンストラクターで、もう 1 つは Eloqent ORM の再カプセル化されたバージョンです。詳細は後述しますが、高度な相関クエリ方法です。

アプリケーション層

この層は、私たちが長い間使用してきた部分です。この層には、Eloquent ORM、移行、およびスキーマの 3 つの主要なコンポーネントが含まれています。

これら 3 つはすべてクエリ構築レイヤーに基づいて実装されています。もちろん、最後の 2 つであるデータ移行コンポーネントと構造ジェネレーターも非常に重要です。が最も重要です。ベストコンポーネント CP はペアで登場することが多いので、これら 2 つを個別に紹介します。

雄弁は最も重要な部分であり、最も重要な役割を果たします。いくつかの章に分けて紹介します。

  • モデルとデータベース (いくつかのイデオロギー的なもの)
  • 雄弁。 ORM の基礎 (Laravel モデル、Eloquent の基礎、コレクションの説明)
  • Eloquent ORM の高度なアプリケーション (再利用可能なクエリのカプセル化、イベント アプリケーション、Getter と Setter)
  • 関連クエリ (さまざまな関連モデルの応用例とコンテンツ量が多いため、関連するさまざまなクエリの問題は 2 つの記事に分けられます)

データ移行と構造ジェネレーターについては、1 つの記事で説明します。

データベースには大量のコンテンツがあるため、技術的な理由により、処理中に多くの間違いが必然的に発生する可能性があります。専門家は私を批判し、正してくれるでしょう。

初めに、私が完成したばかりの方向性ではなく、ガイドでもあるため、その後の記事のリリース中に必然的にいくつかの変更が発生しますので、注意してください。注目〜

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

多くの場合、キーワードと追跡パラメーターで散らかった長いURLは、訪問者を阻止できます。 URL短縮スクリプトはソリューションを提供し、ソーシャルメディアやその他のプラットフォームに最適な簡潔なリンクを作成します。 これらのスクリプトは、個々のWebサイトにとって価値があります

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

2012年のFacebookによる有名な買収に続いて、Instagramはサードパーティの使用のために2セットのAPIを採用しました。これらはInstagramグラフAPIとInstagram Basic Display APIです。

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

2025 PHP状況調査の発表 2025 PHP状況調査の発表 Mar 03, 2025 pm 04:20 PM

2025 PHP Landscape Surveyは、現在のPHP開発動向を調査しています。 開発者や企業に洞察を提供することを目的とした、フレームワークの使用、展開方法、および課題を調査します。 この調査では、現代のPHP Versioの成長が予想されています

See all articles