获取除已享受折扣以外的所有产品?

我有这两张桌子:


产品表:


name - price - quantity - etc

折扣表:


type('percentage','numeric') - value - cancel - expired_at

多态关系:可贴现表:


discount_id - discountable_id - discountable_type

他们之间有。所以我需要得到所有的产品,除了已经有折扣+有折扣的产品,但它结束了Many To Many (Polymorphic)expired_at


产品型号:


public function discounts()

{

    return $this->morphToMany('App\Models\Discount', 'discountable');

}

折扣模式:


public function products()

{

    return $this->morphedByMany('App\Models\Product', 'discountable')->withTimestamps();

}

我的错误关闭!


public function index()

{

    $products = Product::with('discounts');


    return view('cp.discounts.index', compact('products'));

}


一只斗牛犬
浏览 82回答 1
1回答

慕侠2389804

您可以使用“没有”方法,以下查询将检索没有任何折扣的所有产品。Product::doesntHave('discounts')->get();如果您想获得产品,除了它结束了+没有任何折扣,您可以使用在关闭中添加条件:expired_atwhereDoesntHaveProduct::whereDoesntHave('discounts', function($query) {    $query->where('expired_at', '>', \Carbon\Carbon::now()->format('Y-m-d H:i:s'));})->get();
打开App,查看更多内容
随时随地看视频慕课网APP