ホームページ > データベース > mysql チュートリアル > LaravelでEloquentリレーションシップを使用して3つのテーブルを結合する方法?

LaravelでEloquentリレーションシップを使用して3つのテーブルを結合する方法?

Patricia Arquette
リリース: 2024-11-14 16:48:02
オリジナル
367 人が閲覧しました

How to Join Three Tables in Laravel Using Eloquent Relationships?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート