Laravel Eloquent モデルを使用した 3 つのテーブルの結合
Laravel では、リレーショナル データの取得が Eloquent モデルを使用して簡素化されています。この記事では、Eloquent を使用して 3 つのテーブルを結合し、Articles、Categories、および Users テーブルからデータを取得する方法を説明します。
次のデータベース スキーマを考えてみましょう:
Articles Table | Categories Table | User Table |
---|---|---|
id | id | id |
title | category_name | user_name |
body | user_type | |
categories_id | ||
user_id |
目標は、カテゴリ名ではなく、対応するカテゴリ名とともに記事を取得することです。 category_id、および user_id の代わりにユーザー名。
データベースに基づいてモデル間の関係を定義するスキーマ:
Article.php:
namespace App\Models; use Eloquent; class Article extends Eloquent { protected $table = 'articles'; public function user() { return $this->belongsTo('App\Models\User'); } public function category() { return $this->belongsTo('App\Models\Category'); } }
カテゴリーory.php:
namespace App\Models; use Eloquent; class Category extends Eloquent { protected $table = "categories"; public function articles() { return $this->hasMany('App\Models\Article'); } }
User.php:
namespace App\Models; use Eloquent; class User extends Eloquent { protected $table = 'users'; public function articles() { return $this->hasMany('App\Models\Article'); } }
関連データを含む記事を取得するには:
$articles = \App\Models\Article::with(['user','category'])->get();
次のように関連データにアクセスします:
// Retrieve user name $article->user->user_name // Retrieve category name $article->category->category_name
カテゴリ内または特定の項目ごとに記事を取得するにはuser:
$categories = \App\Models\Category::with('articles')->get(); $users = \App\Models\Category::with('users')->get();
Laravel の Eloquent モデルは、リレーショナル データを取得するタスクを大幅に簡素化します。モデル間の関係を理解し、コード内で設定することで、必要なデータに簡単にアクセスし、より複雑なクエリを効率的に実行できます。
以上がLaravelでEloquentリレーションシップを使用して3つのテーブルを結合する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。