2016-11-13 1 views
0
class Game extends Model 
{ 
public function regions() { 
    return $this->hasMany('Region'); 
} 
public function servers() { 
    return $this->hasMany('Server'); 
} 
} 

class Region extends Model 
{ 
public function servers() { 

    return $this->belongsToMany('Server'); 
} 
} 

class Server extends Model 
{ 
public function regions() { 
    return $this->hasMany('Region'); 
} 
} 

Jedes Spiel hat einen Server und jeder Server hat eine Region. Ich versuche alle Spiele, ihren Server und ihre Region zu bekommen: game = Game :: with ('regions', 'regions.servers') -> find ($ id);Laravel 5.3 Beziehungsproblem

Ich erhalte eine Fehlermeldung, dass: Basistabelle oder Ansicht nicht gefunden: 1146 Table 'region_server' existiert nicht (SQL:. servers select *, region_serverregion_id als pivot_region_id, region_serverserver_id als pivot_server_id von servers INNER JOIN.. region_server auf servers. id = region_server. server_id wo region_server. region_id in (4, 5)

Was mache ich falsch? Dank!

+1

'Jedes Spiel einen Server hat und jeder Server ein region.' Gut in Ihrem Code hat, Sie‘ Jedes Spiel hat viele Server und jeder Server hat viele Regionen. – tkausl

Antwort

3

Ihre Beziehungen gebrochen zu sein scheint, sollten Sie es wie folgt tun:

class Game extends Model 
{ 
    public function regions() { 
     return $this->hasMany('Region'); 
    } 
    public function servers() { 
     return $this->hasMany('Server'); 
    } 
} 

class Region extends Model 
{ 
    public function servers() { 
     return $this->hasMany('Server'); 
    } 
} 

class Server extends Model 
{ 
    public function region() { 
     return $this->belongsTo('Region'); 
    } 
} 

Nach den obigen Beziehungen

  • Jedes Spiel viele Server hat.
  • Jeder Server gehört zu einer Region
  • Jede Region viele Server

hoffe, das hilft

+0

Perfecto. Sie haben Recht! Vielen Dank!! – user3844579

+0

@ user3844579 - Wenn Sie diese Antwort richtig finden, dann markieren Sie diese als akzeptierte Antwort, da sie mich motiviert, weitere Fragen wie folgt zu beantworten: D, und anderen schnell helfen, die richtigen Antworten zu erhalten –

+0

wird es in 6 Minuten tun, haha ​​(stackoverflow limit) – user3844579