0

I'm using an online woocommerce shop. I have several suppliers for my goods. and when my order is saved I save each item's supplier. Now I'm trying to query my database via laravel. this is my query by laravel's database facade which works alright.

$items = \DB::connection('wordpress')->table('woocommerce_order_items')
            ->Join('woocommerce_order_itemmeta as tbl_line_subtotal', function ($join) {
                $join->on('tbl_line_subtotal.order_item_id', '=', 'woocommerce_order_items.order_item_id')
                    ->where('tbl_line_subtotal.meta_key', '_line_subtotal');
            })
            ->Join('woocommerce_order_itemmeta as tbl_supplier', function ($join) use ($supplier) {
                $join->on('tbl_supplier.order_item_id', '=', 'woocommerce_order_items.order_item_id')
                    ->where([['tbl_supplier.meta_key', '=', '_supplier'], ['tbl_supplier.meta_value', '=', $supplier]]);
            })
            ->select(
                'woocommerce_order_items.order_id AS order_id',
                'tbl_line_subtotal.meta_value AS _line_subtotal',
                'tbl_supplier.meta_value AS _supplier',
            );


        $orders = \DB::connection('wordpress')->table('posts')
            ->joinSub($items, 'items', function ($join) {
                $join->on('posts.ID', '=', 'items.order_id');
            })
            ->select(
                'posts.ID as order_id',
                'items._line_subtotal',
                'items._supplier',
            )
            ->where('order_id', 141511)
            ->get();

the result is this: enter image description here

It works great but, what I really need is to get aggregate sum of suppliers for each order so I did this:


$orders = \DB::connection('wordpress')->table('posts')
   ->joinSub($items, 'items', function ($join) {
        $join->on('posts.ID', '=', 'items.order_id');
            })
        ->select(
                'posts.ID as order_id',
         //     'items._line_subtotal',
                \DB::raw('SUM(items._line_subtotal) as sum_line_subtotal') ,
                'items._supplier AS _supplier',
            )
            ->where('order_id', 141511)
            ->groupBy('order_id','_supplier')
            ->get(); 

But now the column items._line_subtotal suddenly becomes unknown. and system returns

Column not found: 1054 Unknown column

what I am doing wrong?

I had to simplify my original question. I have achieved my goal by using raw select query but since I have complex where clauses I need to use Laravel's DB facade.

ED SA
  • 1
  • 1

0 Answers0