Как я могу представить отношения с владельцем игры в 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;
}
Другие вопросы по тегам