Php 雄辩的:使用透视表的困惑

Php 雄辩的:使用透视表的困惑,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我是拉威尔的新手&口才好。我的数据库中基本上有以下表格: 用户: 身份证 电子邮件 名字 密码 优惠券: 身份证 头衔 细部 折扣 用户id(创建者) 投票(重点): 用户id 优惠券id 投票 所以用户可以在优惠券上投票。每个优惠券属于一个用户(创建者)。根据文档,我映射了如下关系: class Coupon extends Model { public function users() { return $this->belongsTo('App\Use

我是拉威尔的新手&口才好。我的数据库中基本上有以下表格:

  • 用户:

    • 身份证
    • 电子邮件
    • 名字
    • 密码
  • 优惠券:

    • 身份证
    • 头衔
    • 细部
    • 折扣
    • 用户id(创建者)
  • 投票(重点):

    • 用户id
    • 优惠券id
    • 投票
所以用户可以在优惠券上投票。每个优惠券属于一个用户(创建者)。根据文档,我映射了如下关系:

class Coupon extends Model
{
  public function users()
  {
    return $this->belongsTo('App\User'); // A coupon belongs to one user
  }
}

class User extends Model
{
  public function coupons()
  {        
    return $this->hasMany('App\Coupon'); // A user has many coupons
  }
}
所以我想画出“选票”的部分。我不知道怎么做。我不确定这是否正确:

// User class
public function votes()
{        
    return $this->belongsToMany('App\Coupon', 'votes'); // A coupon vote belongs to many users?
}

// Coupon class
public function votes()
{        
    return $this->belongsToMany('App\User', 'votes'); // A user vote belongs to many coupons?
}

我很肯定这是错的。有人能帮我吗?

我在4.2中只使用了枢轴,但我认为5应该工作得非常类似

class Coupon extends Model
{
  public function coupon_votes()
  {
    return $this->belongsToMany('App\User', 'votes', 'user_id', 'coupon_id')->withPivot('vote');
  }
}

class User extends Model
{
  public function coupon_votes()
  {        
     return $this->belongsToMany('App\Coupon', 'votes', 'coupon_id', 'user_id')->withPivot('vote');
  }
}
保存:

//add a vote 1 four coupon_id 2 
$user->coupon_votes()->attach(2, ['vote' => 1]);
//or multiple - add vote 1 for coupon_id 2 and vote 0  for coupon_id 3
$user->coupon_votes()->sync([2 => ['vote' => 1], 3 => ['vote'=> 0]]);
收回

$user->coupon_votes()->get();

[
  {
    id: "2",
    // ... <-coupon info 
    pivot: {
      user_id: "1",
      coupon_id: "2",
      vote: "1"
    }
  },
  {
    id: "3",
    // ... <-coupon info 
    pivot: {
      user_id: "1",
      coupon_id: "3",
      vote: "0"
    }
  }
]

$coupon  = Coupon::find(2);

$coupon->coupon_votes()->get()

[
 {
  id: "1",
  // ... <- user info
  pivot: {
      coupon_id: "2",
      user_id: "1",
      vote: "1"
    }
 }
]
$user->优惠券投票()->get();
[
{
id:“2”,
//…得到()
[
{
id:“1”,

//…就这样,谢谢你!