2016-09-22 3 views
0

Ich habe drei Modell: Manager, Vendor, Banquet und die Beziehung ist:
Wie die Beziehung in Laravel bekommen

  • Manager hat einen Anbieter
  • Anbieter haben viel Bankett

Wie bekommt man den ganzen Manager mit allen Beziehungen in Laravel Orm?

$manager = Manager::where('active',1)->get(); 
$vendor = $manager->vendor()->get();// -- dose not work! 
$banquet = $vendor->banquet()->get();// -- dose not work! 

Manager-Modell:

class Manager extends Model{ 
    protected $table = 'manager'; 
    protected $primaryKey = 'id'; 

    public function vendor(){ 
    return $this->hasOne('ACME\Entities\Vendor','managerId','id'); 
    } 
} 

ist hier das Modell

Hersteller Modell:

class Vendor extends Model{ 
    protected $table = 'vendor'; 
    protected $primaryKey = 'id'; 

    public function manager(){ 
     return $this->belongsTo('ACME\Entities\Manager_V','id','managerId'); 
    } 

    public function banquet(){ 
     return $this->hasMany('ACME\Entities\V_Banquet' ,'vendorId' ,'id'); 
    } 
} 

Bankett Modell:

class Banquet extends Model{ 
    protected $table = 'banquet'; 
    protected $primaryKey ='id'; 

    public function vendor() 
    { 
     return $this->belongsTo('ACME\Entities\Vendor' ,'vendorId' ,'id'); 
    } 
} 

Antwort

0

Verwenden mit Methode

$manager = Manager::with(['vendor','vendor.banquet'])->where('active',1)->get(); 

können Sie Daten wie

$banquet = $manager->vendor->banquet; 
// $banquet will be array of banquet model objects 

Denken Sie daran, hasMany return array, hasOne Rückkehr Objekt und belongsTo Rückkehr Objekt erhalten.

+0

Ok, wenn ich einen neuen Beziehung codition $ Händler hinzufügen muß = $ Manager-> Anbieter() -> where ('aktiv', 1) -> erhalten (); Wie kann ich tun. – Fan

+0

Ich denke, Sie möchten eine Bedingung für das Beziehungsmodell hinzufügen. – anwerj

1

Das hat nicht funktioniert, weil get() gibt die Sammlung von Managern. Verkäufer hat viele Bankette so, banquets() im Verkäufermodell würde gute Versammlung sein. Und Sie sollten etwas tun:

$managers = Manager::where('active',1)->with('vendor','vendor.banquets')->get(); 
    foreach($managers as $manager) 
    { 
      $vendor=$manager->vendor; 
      print_r($vendor); 
      foreach($vendor->banquets as $banquet) 
      { 
        print_r($banquet); 
      } 
    }