Laravel 获取多对多数据透视表中每个实例的总出现次数

Laravel 获取多对多数据透视表中每个实例的总出现次数,laravel,many-to-many,laravel-4,Laravel,Many To Many,Laravel 4,假设我们有两个模型的多对多关系,优惠券和产品 class Coupon extends \Eloquent { protected $table = 'coupons'; public function products() { return $this->belongsToMany('Product'); } } 及 使用数据透视表,只需将两种型号配对即可: table: coupon_product coupon_id, product

假设我们有两个模型的多对多关系,优惠券和产品

class Coupon extends \Eloquent {

  protected $table = 'coupons';

    public function products()
    {
        return $this->belongsToMany('Product');
    }
}

使用数据透视表,只需将两种型号配对即可:

table: coupon_product
coupon_id, product_id
在pivot表中,有可能(在我的例子中也是有效的)有多个相同的对,即

coupon_id | product_id
    1            1
    1            1
    1            2
    2            1
    3            3
    3            3
等等

获取总优惠券的最佳方法是(例如)产品id=1,计算数据透视表中优惠券的所有出现次数?我们的目标是在视图中传递一个$coups数组,以便显示注册为product id=1的所有优惠券的列表

在上面的透视表示例中,它将是:

  • 息票1
  • 息票1
  • 息票2

  • 如果您使用的是DB查询生成器:

    DB::table('coupons')->where('product_id', 1)->get();
    
    如果使用雄辩的ORM:

    Product::find(1)->coupons;
    
    在使用雄辩的ORM时,如果您希望对要加载的优惠券添加一些约束,可以使用以下选项:

    Product::find(1)->coupons()->where(some_condition)->get();
    

    Thans Shishir,我在做你建议的有说服力的事情,没有->get(),最后我对错误感到沮丧。。。也许你也应该把它添加到你的答案中,以防万一:)
    Product::find(1)->coupons()->where(some_condition)->get();