ホームページ >PHPフレームワーク >Laravel >異なるタイプのlaravelは異なるテーブルに対応します

異なるタイプのlaravelは異なるテーブルに対応します

王林
王林オリジナル
2023-05-20 19:22:35700ブラウズ

Laravel は、最新の Web アプリケーションを構築するための便利なツールや機能を多数提供する人気の PHP Web フレームワークです。 Laravel では、Eloquent ORM (オブジェクト リレーショナル マッピング) を使用してデータベース内のデータを管理できます。このデータベースレベルのライブラリは、Laravel フレームワークの非常に重要な部分であると言え、バックエンド プログラムのデータ管理を担当します。 Laravel では、モデルを定義することでさまざまな種類のデータを管理でき、モデル間の関係を通じてデータを整理したりクエリしたりできます。今日は、Laravel でモデル間の関係を使用して、さまざまなタイプのデータに対応するさまざまなテーブルを処理する方法について説明します。

ほとんどの Web アプリケーションでは、通常、データをユーザー データ、製品データ、記事データなどのさまざまな種類に分割する必要があります。従来のデータベース設計では、通常、データの種類ごとに個別のテーブルが作成されるため、データベース テーブルの数が増加する可能性があります。しかし、Laravel では、データベースにテーブルを直接作成するのではなく、モデルを構築することでさまざまなタイプのデータを表すことができます。このようにして、データの編成とクエリを実現できるだけでなく、データベース テーブルが多すぎることによって引き起こされる問題も回避できます。しかし、プログラム内で特定の種類のデータを検索する必要がある場合、それらが正しいテーブルに対応していることを確認するにはどうすればよいでしょうか?

Laravel では、データの種類ごとに異なるモデルを定義することで、この問題を解決できます。たとえば、アプリケーションにはユーザー データ、アイテム データ、記事データが含まれています。対応するモデルは、UserProductPost の各タイプのデータに対して作成できます。これらのモデルは、さまざまな Eloquent 機能を使用するために、extends キーワードを通じて Laravel の Model クラスを継承できます。

ただし、モデル内でどのデータ テーブルがそれに対応するかを定義する必要もあります。デフォルトでは、Laravel はモデル名を小文字に変換し、テーブル名として複数形にします。たとえば、User モデルはデフォルトで users テーブルになり、Product モデルはデフォルトで products テーブルになります。ほとんどの場合、このデフォルトの動作で十分です。ただし、別のテーブル名を使用する必要がある場合は、特定のルールに従ってテーブル名をカスタマイズすることもできます。

まず、モデルの $table 属性を使用して、使用するテーブル名を指定します。たとえば、次のコードを User モデルに追加できます:

class User extends Model
{
    protected $table = 'my_users';
}

これにより、User モデルは代わりに my_users テーブルを使用します。デフォルトの users テーブルの。

2 番目に、複数のモデルで同じテーブルを使用する必要がある場合は、$table 属性を使用してテーブル名のベース名を指定し、Laravel の規則を使用してテーブル名を指定します。実際のテーブル名 テーブル名。たとえば、アプリケーションでユーザー データを管理するために 2 つの異なるモデル (Web サイト ユーザー用とモバイル アプリ ユーザー用) を使用する必要があるとします。この場合、テーブル名を users に設定し、モデル内で別のサフィックスを使用して実際のテーブル名を示すことができます。たとえば、WebsiteUser モデルは $table プロパティを 'users_website' に設定でき、AppUser モデルは ## を設定できます。 #$table 属性は 'users_app' に設定されます。このように、Laravel はモデルのサフィックスに基づいてテーブル名を自動的に連結し、データを正しいテーブルに保存します。

さらに、Laravel でポリモーフィックな関連付けを使用して、さまざまな種類のデータに対応するテーブルを作成することもできます。いわゆるポリモーフィックな関連付けとは、モデルを他の複数のモデルに関連付けることができる関係を指します。たとえば、このアプリケーションでは、あらゆる種類のデータに関するコメントを保存する

Comment モデルを作成できます。この関係は多態性の関連付けです。

Comment モデルにポリモーフィックな関連付けを実装するには、Laravel のポリモーフィック規約を使用する必要があります。ポリモーフィックな関連付けを行う場合、関連付けられるモデルの 2 つのプロパティ、morphTomorphMany を定義する必要があります。 morphTo 属性は、モデルが所有するポリモーフィックな関連付けを示し、他のモデルで参照できるように名前を指定する必要があります。 morphMany 属性は、別のモデルが所有するポリモーフィックな関連付けを示し、関連付けられているモデルとそれが指す名前を指定する必要があります。相関名は、後続のクエリで参照できるように、両方のプロパティで定義する必要があります。例:

class Comment extends Model
{
  public function commentable()
  {
      return $this->morphTo();
  }
}

class User extends Model
{
  public function comments()
  {
      return $this->morphMany('AppComment', 'commentable');
  }
}

class Product extends Model
{
  public function comments()
  {
      return $this->morphMany('AppComment', 'commentable');
  }
}

class Post extends Model
{
  public function comments()
  {
      return $this->morphMany('AppComment', 'commentable');
  }
}

このようにして、コメントをクエリするときに、

commentable_typecommentable_id の関係を使用して、コメントがどのモデルに属しているかを判断できます。たとえば、Product モデルのすべてのレビューをクエリするには、次のコードを使用します:

$product = Product::find(1);
$comments = $product->comments()->get();

要約すると、Laravel では、データベース内のデータを管理するさまざまな方法が提供されます。モデルとポリモーフィックな関係を通じてデータを整理し、さまざまな方法を使用してデータがどのテーブルに対応するかを指定できます。これらのツールを使用すると、効率的でよく整理されたデータベース構造を簡単に作成し、このデータに簡単にアクセスして使用できます。

以上が異なるタイプのlaravelは異なるテーブルに対応しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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