我有这样的架构:
现在我想在Laravel 4中使用它。到目前为止,我只能在不触及owntype
的情况下为某些用户获取游戏。代码:
public function games() {
return $this->belongsToMany('Game','games_users','owntype_id','games_id')->where('user_id','1');
}
我唯一得到的是onwtype_id
。如何将owntype
表添加到“equasion”?
答案 0 :(得分:0)
您可以通过关系函数上的withPivot
函数指定额外的数据透视表列。
基本上我认为你想这样做:
class User extends Eloquent {
public function games()
{
return $this->belongsToMany('Game', 'games_users')->withPivot('owntype_id');
}
}
class Game extends Eloquent {
public function users()
{
return $this->belongsToMany('User', 'games_users')->withPivot('owntype_id');
}
}
class Owntype extends Eloquent {
protected $table = 'owntype';
}
// Now you can do:
foreach ($user->games as $game)
{
// Echo each Owntype description.
echo Owntype::find($game->pivot->owntype_id)->description;
}
为了记录...我认为你可能会为owntype
创建一个新表格,从而做得太过分了。只需将说明设置为数据透视表上的type
列即可。还要确保您的数据透视表名为game_user
(单数,按字母顺序排列),Laravel将知道自动使用哪个数据透视表。
class User extends Eloquent {
public function games()
{
return $this->belongsToMany('Game')->withPivot('type');
}
}
class Game extends Eloquent {
public function users()
{
return $this->belongsToMany('User')->withPivot('type');
}
}
// Now you can do:
foreach ($user->games as $game)
{
// Echo each ownership type.
echo $game->pivot->type;
}
有关使用数据透视表的更多信息可以在the Laravel 4 docs中找到。