Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie man drei Tischen nach dem eloquenten Laravel-Modell beitritt

Mit Eloquent ist es sehr einfach, relationale Daten abzurufen. Sehen Sie sich das folgende Beispiel mit Ihrem Szenario in Laravel 5 an.

Wir haben drei Modelle:

  1. Artikel (gehört zu Benutzer und Kategorie)

  2. Kategorie (hat viele Artikel)

  3. Benutzer (hat viele Artikel)

  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. Kategorie.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');
        }
    }

Sie müssen Ihre Datenbankbeziehung und die Einrichtung in Modellen verstehen. Der Benutzer hat viele Artikel. Die Kategorie hat viele Artikel. Artikel gehören zu Benutzer und Kategorie. Sobald Sie die Beziehungen in Laravel eingerichtet haben, wird es einfach, die zugehörigen Informationen abzurufen.

Wenn Sie beispielsweise einen Artikel anhand des Benutzers und der Kategorie abrufen möchten, müssen Sie Folgendes schreiben:

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

und Sie können dies folgendermaßen verwenden:

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

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

In einem anderen Fall müssen Sie möglicherweise alle Artikel innerhalb einer Kategorie oder alle Artikel eines bestimmten Benutzers abrufen. Du kannst es so schreiben:

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

Weitere Informationen finden Sie unter http://laravel.com/docs/5.0/eloquent