2016-11-13 5 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'); 
} 
} 

В каждой игре есть сервер, и на каждом сервере есть регион. Я пытаюсь получить все игры, свой сервер и его регион: game = Game :: with ('regions', 'regions.servers') -> find ($ id);Laravel 5.3 вопрос о связи

Я получаю сообщение об ошибке, что: таблица Base или просмотреть не найдено: 1146 Таблица «region_server» не существует (SQL:. Выберите servers *, region_serverregion_id в pivot_region_id, region_serverserver_id в pivot_server_id от servers внутреннего соединения.. region_server на servers. id = region_server. server_id где region_server. region_id в (4, 5)

Что я делаю неправильно? Спасибо!

+1

'Каждая игра имеет сервер и каждый сервер имеет region.' Ну в вашем коде, вы» re говорят, что в каждой игре много серверов, и на каждом сервере есть много регионов. – tkausl

ответ

3

Ваши отношения, кажется, сломана, вы должны сделать это следующим образом:

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

Согласно вышеприведенным отношений,

  • Каждая игра имеет много серверов.
  • Каждого сервера относится к области
  • Каждого региона имеет много серверов

Надеется, что это помогает

+0

Perfecto. Ты прав! Благодаря!! – user3844579

+0

@ user3844579 - Если вы правильно ответите на этот ответ, отметьте это как принятый ответ, поскольку он мотивирует меня ответить на другие вопросы, такие как: D, и помочь другим быстро получить ответы на вопросы. –

+0

сделает это через 6 минут, haha ​​(ограничение стека) – user3844579