Laravel ***销售产品功能

Posted

技术标签:

【中文标题】Laravel ***销售产品功能【英文标题】:Laravel top sale product function 【发布时间】:2021-10-10 09:17:43 【问题描述】:

我通过 order_details 在 Product 和 order 之间建立了多对多的关系,

我如何才能获得销量前 5 的产品?

产品:

public function orders()
    
        return $this->belongsToMany(Order::class, 'order_details');
    

订单:

  public function products()
    
        return $this->belongsToMany(Product::class, 'order_details')->withPivot(['quantity', 'sale_price']);
    

数据透视表:

public function up()

    Schema::create('order_details', function (Blueprint $table) 
        $table->id();
        $table->foreignId('order_id');
        $table->foreign('order_id')
            ->on('orders')
            ->references('id')->onDelete('cascade');
        $table->foreignId('product_id');
        $table->foreign('product_id')
            ->on('products')
            ->references('id')->onDelete('cascade');
        $table->integer('quantity');
        $table->decimal('sale_price', 10, 4);
        $table->timestamps();
    );

【问题讨论】:

【参考方案1】:

也许这样的事情会起作用

$topfive = Order::with('products')->get()->sortBy(function($order) 
    return $order->products->count();
)->take(5);

在这里,您可以获取有任何产品的订单,从中收集,按每个订单拥有的产品数量排序,然后选择前 5 名。我希望这就是您所说的“前 5 名”。如果不告诉我并且我会修复查询。

编辑 1

由于您需要最常使用的产品,因此反向查询

$topfive = Product::with('orders')->get()->sortBy(function($product) 
        return $product->orders->count();
    )->take(5);

【讨论】:

谢谢亲爱的,我想让前5名的销售产品显示在前端。 那么这应该可以了。在查询后运行 dd($topfive) 并查看是否是您要查找的结果

以上是关于Laravel ***销售产品功能的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 中显示限时产品报价

Laravel 获取不属于团队的用户

Laravel 5.5 中的多字段排序

Laravel 5 中相关产品数量的产品类别列表

分类明智的产品销售 laravel

只有买家可以在 Livewire:Laravel 中对产品进行评分