目次
Eloquent とは
バッチ割り当て
Basic使用法
キーポイントの使用

Laravel Eloquent ORM を理解する

Jun 20, 2016 pm 12:40 PM

Eloquent とは

Eloquent とは、Laravel の「ORM」、つまりオブジェクト リレーショナル マッピングである「Object Relational Mapping」です。 ORM の登場は、データベース操作をより便利にするために役立ちます。 Eloquent では、「モデル クラス」をデータベース テーブルに対応させることができ、最下層に多くの「関数」をカプセル化しているため、モデル クラスの呼び出しが非常に便利になります。すべての Eloquent モデルは IlluminateDatabaseEloquentModel を継承します。

make:model コマンドを使用して Eloquent モデルを自動的に生成します:

php artisan make:model Article -m
ログイン後にコピー

-m パラメーター: このモデルに対応する記事テーブルを自動的に生成します

php artisan make:migration create_articles_table --create=articles
ログイン後にコピー

モデルに対応するテーブルを作成します (= 後でテーブル名を指定します)

注: モデルがどのデータベース テーブルを使用するかは Eloquent には伝えません。特別な指定がない場合、デフォルトではシステムが自動的に「クラス名の小文字複数形」という名前でデータベーステーブルに対応します。したがって、上記の例では、Eloquent は Article モデルがデータを Article データベース テーブルに保存すると想定します。クラスで table 属性を定義して、対応するデータベース テーブルをカスタマイズすることもできます。

class User extends Model {    protected $table = 'your_table';}
ログイン後にコピー

バッチ割り当て

新しいモデルを構築するときに、ユーザー入力をモデル データに盲目的に書き込むと、重大なセキュリティ リスクが発生する可能性があります。このため、すべての Eloquent モデルでは、デフォルトでバッチ割り当てが禁止されています。

fillable 属性は、バッチ割り当てをサポートするフィールドを指定します。クラスの属性内、またはインスタンス化後に設定できます。

class Article extends Model {    protected $fillable = ['title', 'content', 'email'];}
ログイン後にコピー

上記の例では、バッチ割り当てを許可する属性 (テーブル内のフィールド) は 3 つだけです。

ガードは fillable の逆で、「ホワイトリスト」ではなく「ブラックリスト」として使用されます。

class Article extends Model {    protected $guarded = ['id', 'password'];}
ログイン後にコピー

上記の例では、id 属性とパスワード属性は使用されません。バッチで割り当てられますが、その他すべてのプロパティではバッチ割り当てが可能です。また、ガード属性を使用して、すべての属性がバッチで割り当てられるのを防ぐこともできます

hidden 属性は、どのフィールドを非表示にするかを指定し、出力されても表示されません

class Article extends Model {    protected $hidden = ['id', 'password'];}
ログイン後にコピー

Basic使用法

ドキュメントの詳細を参照してください

ID 2 のドキュメントを見つけて、そのタイトルを出力します

$article = Article::find(2);echo $article->title;
ログイン後にコピー

場合によっては、モデル データが見つからない場合は、firstOrFail メソッドを通じて例外をスローします。

$article = Article::findOrFail(100);echo $article->title;
ログイン後にコピー

「I am the title」というタイトルの記事を検索し、ID を出力します

$article = Article::where('title', '我是标题')->first();echo $article->id;
ログイン後にコピー

すべての記事をクエリし、ループですべてのタイトルを出力します

$articles = Article::all(); // 此处得到的 $articles 是一个对象集合,可以在后面加上 '->toArray()' 变成多维数组。foreach ($articles as $article) {    echo $article->title;}
ログイン後にコピー

ID が 10 ~ 20 のすべての記事を検索し、すべてのタイトルを出力します

$articles = Article::where('id', '>', 10)->where('id', '<', 20)->get();foreach ($articles as $article) {    echo $article->title;}
ログイン後にコピー

すべての記事をクエリしてループ内ですべてのタイトルを出力し、updated_at に従って逆順に並べ替えます

$articles = Article::where('id', '>', 10)->where('id', '<', 20)->orderBy('updated_at', 'desc')->get();foreach ($articles as $article) {    echo $article->title;}
ログイン後にコピー

キーポイントの使用

  1. Eloquent を継承するすべてのクラスには 2 つの「固定使用法」 Article::find($number) Article::all() があり、前者は値を取得するオブジェクトを含むデータベースは、データベース全体を含むオブジェクトのコレクションを取得します。

  2. where() orderBy() などのすべての中間メソッドは、「静的」呼び出しと「非静的チェーン」呼び出しの両方、つまり Article::where() をサポートできます。 .および記事::....->where()。

  3. すべての「固定されていない使用方法」呼び出しには、最終的に「終了」するための操作が必要です。このチュートリアルには、->get() と -> という 2 つの「終了操作」があります。初め()。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

システムの再起動後にUnixSocketの権限を自動的に設定する方法は? システムの再起動後にUnixSocketの権限を自動的に設定する方法は? Mar 31, 2025 pm 11:54 PM

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

See all articles