我正在试图弄清楚我遇到的逻辑问题,我不知道还能在哪里问问题!
我有两个对象,我试图描述它们; 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');
}
}
我甚至难以弄清楚如何以清晰简洁的方式提出这个问题,所以如果需要更多细节,请不要犹豫。
答案 0 :(得分:2)
你需要的是桌子: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;
}