PHP电子商务订单拆分给卖家Laravel

时间:2016-11-12 08:36:21

标签: php laravel eloquent e-commerce laravel-5.3

我目前正在使用Laravel 5.3构建一个小型网上商店,用户可以注册并添加要销售的产品。然后,另一个用户可以搜索产品,将它们放入购物车并购买。然后我将这个订单信息保存到db(作为2个表),order(包含id(订单),user_id(谁买了它)和总付费金额)然后theres {{1 (包含id,相关订单ID和产品ID)。

现在我想让卖家以及买家有机会查看过去的订单。现在有了线索:向买家展示这一点很简单,因为我只需要检查order_items表中的用户ID并获取它们。但是在我想到之后,卖家并不那么容易,因为卖家也应该看到"他的"订单,所以来自买家的订单,包含他的一个或多个产品,但是:他应该只看到订单的一部分与他的产品,而不是买家可以从其他人那里购买的产品。我想你知道我的意思吗?

有没有办法解决这个问题"轻松"或者最佳实践如何做到这一点? 基本上我可以创建两个子表,称为orderssub_orders或其他东西,然后为每个卖家创建一个sub_order_items(在创建订单后立即创建),但这不是太容易实施(我猜),也许还有更好的方式,我还没想到。

有什么想法吗?

这些都是相关模型:

sub_order

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Order extends Model
{
    public function user()
    {
        return $this->belongsTo('App\User');
    }

    public function orderItems()
    {
        return $this->hasMany('App\OrderItem');
    }
}

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class OrderItem extends Model
{
    protected $table = 'order_items';

    public function product()
    {
        return $this->belongsTo('App\Product');
    }
}

编辑:这是我到目前为止所得到的:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    //
}

因此,这列出了包含卖方至少一种产品的所有订单。当我知道(在该视图中$orders = Order::whereHas('orderItems.product', function ($query) { $query->where('user_id', '=', \Auth::user()->id); })->get(); return view('order.list',['orders'=>$orders]); )点击一个订单时,我可以看到该订单的所有产品,但我只是想看看那些来自该卖家的人。 这是我显示单个订单的方式:

order.list

我现在如何仅显示订单的相关产品以及相关产品的总和?

1 个答案:

答案 0 :(得分:1)

不确定你如何命名你的模型,但这是个主意。类似的东西:

// get the logged in seller and set it to $seller

$orders = Order::whereHas('orderItems.product', function ($query) {
    $query->where('seller_id', '=', $seller->id);
})->get();

// will get you orders that have products by this seller

从那时起,您可以过滤您想要展示的内容(不同卖家的订单中排除产品等)。