ホームページ PHPフレームワーク Laravel Laravel モデル間の最も単純な「1 対 1」の関係について話しましょう。

Laravel モデル間の最も単純な「1 対 1」の関係について話しましょう。

Oct 12, 2020 pm 02:10 PM
laravel

以下は、#Laravel のチュートリアルコラムで、Laravel モデル間の最も単純な「1 対 1」の関係を紹介します。 , 困っている友達のお役に立てれば幸いです!

Laravel モデル間の最も単純な「1 対 1」の関係について話しましょう。

#はじめにリレーショナル データベースは、非常に使いやすいデータ関連付けバインディング モードを提供します。 SQL ステートメントは、関連するデータのクエリと操作を簡単に実行できます。

すべての関係をデータベースレベルで操作すると、非常に不便になります。

ということで、laravelモデルではアソシエーション関係が提供されており、この記事ではその使い方を整理していきます。

コード時間PPT のように原稿を読んで、すべての関係モデルをリストする必要はありません。学習には効率的ではありません。

例から始めて、関連関係がどのような問題を解決するのか、またその使用方法を見てみましょう。

最初はデータベースの準備です。次の 2 つのテーブルの間にフィールドの対応があると仮定します:

Laravel モデル間の最も単純な「1 対 1」の関係について話しましょう。コマンド ラインを使用してプロファイルを作成します。ファイル:

php artisan make:model Profile --migration
ログイン後にコピー

生成された

app/Profile.php

ファイルの内容を見てみましょう:

namespace App;use Illuminate\Database\Eloquent\Model;class Profile extends Model {}
ログイン後にコピー
##–migration

オプションが使用され、laravel が自動的に実行されます。

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
ログイン後にコピー

Association

すべての準備が整いました。では、「関連付けを使用してデータの一貫性を処理する」を始めましょう。ユーザーはプロファイルに対応するため、これは 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 サイトの他の関連記事を参照してください。

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

Laravel と CodeIgniter の最新バージョンの比較 Laravel と CodeIgniter の最新バージョンの比較 Jun 05, 2024 pm 05:29 PM

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

Laravel と CodeIgniter のデータ処理機能はどのように比較されますか? Laravel と CodeIgniter のデータ処理機能はどのように比較されますか? Jun 01, 2024 pm 01:34 PM

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

Laravel と CodeIgniter ではどちらが初心者に優しいでしょうか? Laravel と CodeIgniter ではどちらが初心者に優しいでしょうか? Jun 05, 2024 pm 07:50 PM

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

Laravel と CodeIgniter: 大規模プロジェクトにはどちらのフレームワークが適していますか? Laravel と CodeIgniter: 大規模プロジェクトにはどちらのフレームワークが適していますか? Jun 04, 2024 am 09:09 AM

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

Laravel - アーティザンコマンド Laravel - アーティザンコマンド Aug 27, 2024 am 10:51 AM

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

Laravel と CodeIgniter: 小規模プロジェクトにはどちらのフレームワークが適していますか? Laravel と CodeIgniter: 小規模プロジェクトにはどちらのフレームワークが適していますか? Jun 04, 2024 pm 05:29 PM

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

Laravel と CodeIgniter ではどちらのテンプレート エンジンが優れていますか? Laravel と CodeIgniter ではどちらのテンプレート エンジンが優れていますか? Jun 03, 2024 am 11:30 AM

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

Laravel - アーティザン コンソール Laravel - アーティザン コンソール Aug 27, 2024 am 10:51 AM

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

See all articles