Laravel モデル間の最も単純な「1 対 1」の関係について話しましょう。
以下は、#Laravel のチュートリアルコラムで、Laravel モデル間の最も単純な「1 対 1」の関係を紹介します。 , 困っている友達のお役に立てれば幸いです!
#はじめにリレーショナル データベースは、非常に使いやすいデータ関連付けバインディング モードを提供します。 SQL ステートメントは、関連するデータのクエリと操作を簡単に実行できます。
すべての関係をデータベースレベルで操作すると、非常に不便になります。
ということで、laravelモデルではアソシエーション関係が提供されており、この記事ではその使い方を整理していきます。
コード時間PPT のように原稿を読んで、すべての関係モデルをリストする必要はありません。学習には効率的ではありません。
例から始めて、関連関係がどのような問題を解決するのか、またその使用方法を見てみましょう。
最初はデータベースの準備です。次の 2 つのテーブルの間にフィールドの対応があると仮定します:
コマンド ラインを使用してプロファイルを作成します。ファイル:
php artisan make:model Profile --migration
生成された
app/Profile.php ファイルの内容を見てみましょう: namespace App;use Illuminate\Database\Eloquent\Model;class Profile extends Model {}
database/migrations/2020_10_11_015236_create_profiles_table.php ファイルが生成されます。 は、対応するデータベース profiles## を生成するために使用されます。 # テーブル。
まだ古いルールですが、最初にデータベースの移行に使用される up メソッドを実装します:
public function up(){ Schema::create('profiles', function(Blueprint $table) { $table->increments('id'); $table->integer('user_id')->unsigned(); $table->foreign('user_id')->references('id')->on('users'); $table->string('url'); $table->string('telephone'); $table->timestamps(); });}
ロールバックのメソッドはリストされていません。テーブルの削除だけです。 。以下の移行手順を手動で実行します。 php artisan migrate
Migrated: 2020_10_11_015236_create_profiles_table.php
すべての準備が整いました。では、「関連付けを使用してデータの一貫性を処理する」を始めましょう。ユーザーはプロファイルに対応するため、これは 1 対 1 の関係になります。次のステートメントを User モデルに追加します:
class User extends Model { public function profile() { return $this->hasOne('App\Profile'); }}
上記のメソッドを定義すると、次のようになります。次のようなチェーンで呼び出されます:
$user = User::find(1)->profile->telephone;
分解して説明しましょう。まず、
User::find($id)を使用して、User モデル オブジェクトのインスタンスを返します。
このインスタンスには、上記の関係ステートメントである profile メソッドがあります。
Call profile 返されるのは Profile オブジェクトのインスタンスなので、電話の元となる Profile のプロパティを引き続き呼び出すことができます。
次の記述方法と同様に、返される結果が異なることに注意することが重要です。 $user = User::find($id);
$user->profile; // 返回 Profile 对象
$user->profile(); // 返回 hasOne 关联关系对象
関連付けられたクエリでは、当然のことながら、関連付けられた更新が存在します。使用法は次のとおりです:
$profile = new Profile; $profile->telephone = '12345678'; $user = User::find(1); $user->profile()->save($profile);
関連付けられた更新の書き込み操作では、当然のことながら、関連付けられた削除とモデル メソッドの呼び出しが存在します:
$user = User::find($id); $user->profile()->delete();
厳密な 1 対 1 の関係により、ユーザーには 1 つのプロファイルしかありません。ユーザーが削除されると、
添付ファイルのない孤独なプロファイルが残ります。
プログラム コンテキストでの一貫性の保証に加えて、ユーザーを削除するときにデータベースの外部キーを使用してプロファイルの関連付けを削除することもできます。次に、移行ファイル
を変更し、次の内容を追加するだけです:
$table->integer('user_id')->unsigned(); $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
この記事では、最も単純な「laravel モデル」を紹介します。アソシエーション」「1 対 1」では、プログラムの観点とデータベースの観点から一貫してリソースを削除する方法を 説明しました。プログラミング レベルでは、より複雑な関係が意味を持つため、次の章でさらに多くの関係を紹介します。
以上がLaravel モデル間の最も単純な「1 対 1」の関係について話しましょう。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









Laravel 9 と CodeIgniter 4 の最新バージョンでは、更新された機能と改善が提供されます。 Laravel9はMVCアーキテクチャを採用しており、データベース移行、認証、テンプレートエンジンなどの機能を提供します。 CodeIgniter4 は、HMVC アーキテクチャを使用してルーティング、ORM、およびキャッシュを提供します。パフォーマンスの面では、Laravel9 のサービスプロバイダーベースの設計パターンと CodeIgniter4 の軽量フレームワークにより、優れたパフォーマンスが得られます。実際のアプリケーションでは、Laravel9 は柔軟性と強力な機能を必要とする複雑なプロジェクトに適しており、CodeIgniter4 は迅速な開発や小規模なアプリケーションに適しています。

Laravel と CodeIgniter のデータ処理機能を比較します。 ORM: Laravel はクラスとオブジェクトのリレーショナル マッピングを提供する EloquentORM を使用しますが、CodeIgniter は ActiveRecord を使用してデータベース モデルを PHP クラスのサブクラスとして表します。クエリビルダー: Laravel には柔軟なチェーンクエリ API がありますが、CodeIgniter のクエリビルダーはよりシンプルで配列ベースです。データ検証: Laravel はカスタム検証ルールをサポートする Validator クラスを提供しますが、CodeIgniter には組み込みの検証関数が少なく、カスタム ルールの手動コーディングが必要です。実践例:ユーザー登録例はLarを示しています

初心者にとって、CodeIgniter は学習曲線が緩やかで機能は少ないですが、基本的なニーズはカバーしています。 Laravel は幅広い機能セットを提供しますが、学習曲線はわずかに急になります。パフォーマンスの点では、Laravel と CodeIgniter はどちらも良好なパフォーマンスを示します。 Laravel にはより広範なドキュメントとアクティブなコミュニティ サポートがあり、CodeIgniter はよりシンプルで軽量で、強力なセキュリティ機能を備えています。ブログアプリケーションを構築する実際のケースでは、Laravel の EloquentORM を使用するとデータ操作が簡素化されますが、CodeIgniter ではより手動の構成が必要になります。

大規模プロジェクト用のフレームワークを選択する場合、Laravel と CodeIgniter にはそれぞれ独自の利点があります。 Laravel はエンタープライズレベルのアプリケーション向けに設計されており、モジュール設計、依存関係の注入、強力な機能セットを提供します。 CodeIgniter は、速度と使いやすさを重視した、小規模から中規模のプロジェクトに適した軽量フレームワークです。複雑な要件と多数のユーザーを伴う大規模なプロジェクトには、Laravel のパワーとスケーラビリティがより適しています。単純なプロジェクトやリソースが限られている状況では、CodeIgniter の軽量で迅速な開発機能がより理想的です。

Laravel - アーティザン コマンド - Laravel 5.7 には、新しいコマンドを処理およびテストするための新しい方法が付属しています。これには職人コマンドをテストする新しい機能が含まれており、そのデモについては以下で説明します。

小規模なプロジェクトの場合、Laravel は強力な機能とセキュリティを必要とする大規模なプロジェクトに適しています。 CodeIgniter は、軽量さと使いやすさを必要とする非常に小規模なプロジェクトに適しています。

Laravel の Blade と CodeIgniter の Twig テンプレート エンジンを比較し、プロジェクトのニーズと個人的な好みに基づいて選択してください。Blade は MVC 構文に基づいており、適切なコード編成とテンプレートの継承を促進します。 Twig は、柔軟な構文、強力なフィルター、拡張サポート、セキュリティ サンドボックスを提供するサードパーティ ライブラリです。

Laravel - Artisan Console - Laravel フレームワークは、コマンドラインを介した対話のための 3 つの主要なツール、つまり Artisan、Ticker、REPL を提供します。この章ではArtisanについて詳しく説明します。
