sql >> Database >  >> RDS >> Mysql

Hoe drie tafels aan te sluiten op laravel welsprekend model

Met Eloquent is het heel eenvoudig om relationele gegevens op te halen. Bekijk het volgende voorbeeld met jouw scenario in Laravel 5.

We hebben drie modellen:

  1. Artikel (behoort tot gebruiker en categorie)

  2. Categorie (heeft veel artikelen)

  3. Gebruiker (heeft veel artikelen)

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

U moet uw databaserelatie en instellingen in modellen begrijpen. De gebruiker heeft veel artikelen. De categorie heeft veel artikelen. Artikelen behoren tot gebruiker en categorie. Zodra je de relaties in Laravel hebt ingesteld, wordt het gemakkelijk om de gerelateerde informatie op te halen.

Als u bijvoorbeeld een artikel wilt ophalen met behulp van de gebruiker en categorie, moet u schrijven:

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

en je kunt dit als volgt gebruiken:

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

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

In een ander geval moet u mogelijk alle artikelen binnen een categorie ophalen of alle artikelen van een specifieke gebruiker. Je kunt het als volgt schrijven:

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

U kunt meer informatie vinden op http://laravel.com/docs/5.0/eloquent



  1. Grondbeginselen van het beheren van gegevensbestanden in SQL Server

  2. IGNORE_DUP_KEY langzamer op geclusterde indexen

  3. Hoe kan ik met succes oude mysql-php-code herschrijven met verouderde mysql_*-functies?

  4. Maven-afhankelijkheid instellen voor SQL Server