2017-03-22 138 views
1

我有哪个用户必须从一个表中选择一种形式持续一个即加入雄辩ORM腓laravel

buisnessarea->katogorie->name->genauer->geometrie->ergebnisse 

我有一个数据库,这样的事情。

buisnessarea 
**buisnessarea_katogorie(pivot table for buisnessarea and katogorie)** 
katogorie 
**katogorie_name(pivot table for katogorie and name)** 
name 
**genauer_name(pivot table for name and genauer)** 
genauer 
**genauer_geometrie(pivot table for genauer and geometrie)** 
geometrie 
ergebnisse(foreign keys for name and geometrie) 

现在我想参加所有这些桌子。目的本is.I想获得buisnessarea在几何学方面。 ,例如,如果我得到10.So的几何学ID我想这导致10

模式

的几何学ID Buisnessarea

public function katogorie() 
    { 
     return $this->belongsToMany('App\Models\Katogorie')->withTimestamps(); 
    } 

Katogorie的buisnessrea

public function buisnessarea() 
    { 
     return $this->belongsToMany('App\Models\Buisnessarea')->withTimestamps(); 
    } 

    public function name() 
    { 
     return $this->belongsToMany('App\Models\Name'); 
    } 

名称

public function katogorie() 
    { 
     return $this->belongsToMany('App\Models\Katogorie'); 
    } 
    public function genauer() 
    { 
     return $this->belongsToMany('App\Models\Genauer'); 
    } 

    public function ergebnisse() 
    { 
     return $this->hasMany('App\Models\Ergebnisse'); 
    } 

Genauer

public function name() 
    { 
     return $this->belongsToMany('App\Models\Name'); 
    } 

    public function geometrie() 
    { 
     return $this->belongsToMany('App\Models\Geometrie'); 
    } 

几何学

public function genauer() 
    { 
     return $this->belongsToMany('App\Models\Genauer'); 
    } 

    public function ergebnisse() 
    { 
     return $this->hasMany('App\Models\Ergebnisse'); 
    } 

    public function stufen() 
    { 
     return $this->hasMany('App\Models\Stufen'); 
    } 

Ergebnisse

public function name() 
    { 
     return $this->belongsTo('App\Models\Name'); 
    } 

    public function geometrie() 
    { 
     return $this->belongsTo('App\Models\Geometrie'); 
    } 

    public function katogorie() 
    { 
     return $this->hasManyThrough('Katogorie','Name',) 
    } 
+0

对不起。我错了。型号现在加入.. –

回答

0

你使用Laravel 5,你可以做沿此线的东西假设:

$geometrie = Geometrie::with("genauer.name.katogorie.buisnessarea")->find($id); 

$buisnessareaOfGeometrie = data_get($geometrie, "genauer.name.katogorie.buisnessarea"); 

检查https://laravel.com/docs/5.3/eloquent-relationships#eager-loading了解更多详情。

+0

感谢您的回复。当我dd($ buisnessareaOfGeometrie);它返回null –

+0

如果你确定应该有数据,那么我建议一次只做一步(做'Geometrie :: find($ id)'然后'Geometrie :: with(“genauer”) - > find( $ id)')并在每个步骤中检查该关系是否按预期加载。 – apokryfos

+0

Geometrie :: with(“genauer”) - > find($ id))。geometrie和genauer有多对多的关系,所以他们已经在工作。我的问题是例如geometrie和name或geometrie和buisnessarea之间没有直接关系所以我怎么能得到数据然后.. –