Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak dołączyć do trzech stołów według wymownego modelu laravel

Z Eloquent bardzo łatwo jest pobrać dane relacyjne. Sprawdź poniższy przykład ze swoim scenariuszem w Laravel 5.

Mamy trzy modele:

  1. Artykuł (należy do użytkownika i kategorii)

  2. Kategoria (ma wiele artykułów)

  3. Użytkownik (ma wiele artykułów)

  1. Artykuł.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. Kategoria.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');
        }
    }

Musisz zrozumieć relację i konfigurację bazy danych w modelach. Użytkownik ma wiele artykułów. Kategoria zawiera wiele artykułów. Artykuły należą do użytkownika i kategorii. Po skonfigurowaniu relacji w Laravel odzyskanie powiązanych informacji staje się łatwe.

Na przykład, jeśli chcesz pobrać artykuł, używając użytkownika i kategorii, musisz napisać:

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

i możesz użyć tego w ten sposób:

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

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

W innym przypadku może być konieczne pobranie wszystkich artykułów z kategorii lub pobranie wszystkich artykułów określonego użytkownika. Możesz to napisać tak:

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

Więcej informacji znajdziesz na http://laravel.com/docs/5.0/eloquent



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak usunąć wiodące i końcowe spacje w MySQL?

  2. Zrozumienie widoków w SQL

  3. Dlaczego mysqli wyświetla błąd braku synchronizacji poleceń?

  4. MySQL DATEDIFF() vs TIMEDIFF():Jaka jest różnica?

  5. Jak zaktualizować, jeśli istnieje, wstawić, jeśli nie (AKA upsert lub merge) w MySQL?