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的所有优惠券的列表
在上面的透视表示例中,它将是:
如果您使用的是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();