sql >> Database teknologi >  >> RDS >> Mysql

Sådan forbinder du tre bord efter larve veltalende model

Med Eloquent er det meget nemt at hente relationelle data. Tjek følgende eksempel med dit scenarie i Laravel 5.

Vi har tre modeller:

  1. Artikel (tilhører bruger og kategori)

  2. Kategori (har mange artikler)

  3. Bruger (har mange artikler)

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

Du skal forstå din databaserelation og opsætning i modeller. Brugeren har mange artikler. Kategorien har mange artikler. Artikler hører til bruger og kategori. Når du først har opsat relationerne i Laravel, bliver det nemt at hente de relaterede oplysninger.

For eksempel, hvis du vil hente en artikel ved at bruge brugeren og kategorien, skal du skrive:

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

og du kan bruge dette sådan:

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

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

I et andet tilfælde skal du muligvis hente alle artiklerne inden for en kategori eller hente alle en specifik brugers artikler. Du kan skrive det sådan her:

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

Du kan lære mere på http://laravel.com/docs/5.0/eloquent



  1. Hvorfor behandler Oracle 9i en tom streng som NULL?

  2. OVER-klausul i Oracle

  3. Kan jeg indstille et standardskema for inden for en lagret procedure?

  4. Tips til brug af SQL Server med Salesforce