Как я могу представить отношения с владельцем игры в Eloquent от Laravel
Я пытаюсь выявить логическую проблему, которая у меня возникла, и я не знал, где еще спросить!
У меня есть два Объекта, отношения которых я пытаюсь описать; User
и Game
, Итак, прямо сейчас у меня есть User
принадлежит многим Games
и что Game
принадлежит многим Users
, То, что я пытаюсь описать, это особый случай, когда User
владеет Game
, Предположительно, это будет просто столбец в таблице для owner_id
, Я, однако, изо всех сил пытаюсь установить, как я могу представить это в Eloquent. Нужно ли создавать новый объект для владельца игры? Или я могу использовать какую-то роль пользователя для описания этого?
Игра
class Game extends Eloquent
{
protected $guarded = array();
public static $rules = array();
// Game belongsToMany User
public function users()
{
return $this->belongsToMany('User');
}
// Need to identify the owner user.
}
пользователь
class User extends Eloquent
{
protected $guarded = array();
public static $rules = array();
// User belongsToMany Game
public function games()
{
return $this->belongsToMany('Game');
}
}
Мне трудно даже понять, как спросить об этом в четкой и краткой форме, поэтому, если вам понадобятся какие-либо дополнительные детали, пожалуйста, не стесняйтесь спрашивать.
1 ответ
То, что вам нужно, это таблица: games_owners. Это схема миграции для него:
Schema::create('games_owners', function($table)
{
$table->increments('id');
$table->integer('user_id');
$table->integer('game_id');
$table->timestamps();
});
Это будет ваша модель пользователя:
class User extends Eloquent
{
protected $guarded = array();
public static $rules = array();
// User belongsToMany Game
public function games()
{
return $this->belongsToMany('Game', 'games_owners', 'user_id');
}
}
А ты модель игры:
class Game extends Eloquent
{
protected $guarded = array();
public static $rules = array();
// Game belongsToMany User
public function users()
{
return $this->belongsToMany('User', 'games_owners', 'game_id');
}
// Need to identify the owner user.
}
И тогда вы сможете делать такие вещи:
$user = User::find(1);
foreach($user->games as $game) {
echo $game->name;
}