sql >> データベース >  >> RDS >> Mysql

Laravelの雄弁なモデルで3つのテーブルを結合する方法

    Eloquentを使用すると、リレーショナルデータを非常に簡単に取得できます。 Laravel5のシナリオで次の例を確認してください。

    3つのモデルがあります:

    1. 記事(ユーザーとカテゴリに属する​​)

    2. カテゴリ(多くの記事があります)

    3. ユーザー(多くの記事があります)

    1. Article.php
        <?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');
            }
        }
    
    1. Category.php
        <?php
        namespace App\Models;
        
        use Eloquent;
        
        class Category extends Eloquent {
            protected $table = "categories";
        
            public function articles() {
                return $this->hasMany('App\Models\Article');
            }
        }
    
    1. User.php
        <?php
        namespace App\Models;
        use Eloquent;
        
        class User extends Eloquent {
            protected $table = 'users';
        
            public function articles() {
                return $this->hasMany('App\Models\Article');
            }
        }
    

    データベースの関係とモデルの設定を理解する必要があります。ユーザーは多くの記事を持っています。カテゴリには多くの記事があります。記事はユーザーとカテゴリに属します。 Laravelでリレーションシップを設定すると、関連情報を簡単に取得できるようになります。

    たとえば、ユーザーとカテゴリを使用して記事を取得する場合は、次のように記述する必要があります。

    $article = \App\Models\Article::with(['user','category'])->first();
    

    そして、あなたはこれを次のように使うことができます:

    //retrieve user name 
    $article->user->user_name  
    
    //retrieve category name 
    $article->category->category_name
    

    別のケースでは、カテゴリ内のすべての記事を取得するか、特定のユーザーのすべての記事を取得する必要がある場合があります。次のように書くことができます:

    $categories = \App\Models\Category::with('articles')->get();
    $users = \App\Models\Category::with('users')->get();
    

    詳細については、http://laravel.com/docs/5.0/eloquent をご覧ください。



    1. SQLiteクエリ結果をタブ区切りリストとして出力

    2. SQLServerからメールを送信するときの「プロファイル名が無効です」を修正

    3. SQLServerデータベースでIDの増分が急増しています

    4. 文字列にSQLでアクセント付き文字が含まれているかどうかを確認しますか?