Laravel。查询生成器组

时间:2017-07-26 01:25:16

标签: php laravel controller

所以我有一个名为“订单”的表格,其中包含receipt_id,以便将其与名为“收据”的表格相关联。

我想将具有相同receipt_id的订单分组,因此在我的控制器中,我使用了此代码;

        $orders = DB::table('orders')
        ->where('status', 0)
        ->groupBy('receipt_id')
        ->get();

    return $orders;

但不幸的是,它只返回第一个。我觉得我不应该使用groupBy。

这是它目前返回的内容;

{
id: 1,
item: "12",
qty: 123,
price: "1823.00",
subtotal: "123.00",
receipt_id: 123,
status: 0,
created_at: null,
updated_at: null
}

编辑:

我只想查询收据表,这是我的刀片现在的样子,并评论了我想要完成的任务。

@forelse($orders as $order)
        <div class="col-md-4">
            <div class="panel panel-default">
                <div class="panel-heading text-center">
                    {{$order->receipt_id}}
                </div>

                <div class="panel-body text-center">
                    <table class="table table-bordered table-responsive">
                        <thead>
                            <th>Order</th>
                            <th>Quantity</th>
                        </thead>

                        <tbody>

                            //all orders that has the same receipt_id will be showed here.
                            <tr>
                                <td>{{$order->item}}</td>
                                <td>{{$order->qty}}</td>
                            </tr>
                        </tbody>
                    </table>
                </div>

                <div class="panel-footer clearfix">
                    <button type="submit" class="btn btn-success pull-right" style="margin-right: 10px;">
                        <i class="fa fa-check-circle" aria-hidden="true"></i> Served
                    </button>
                </div>
            </div>
        </div>
        @empty

        @endforelse

编辑:收据和订单的数据库结构。

收据;

Schema::create('receipts', function (Blueprint $table) {
            $table->increments('id');
            $table->decimal('total');
            $table->decimal('vatable');
            $table->decimal('vat');
            $table->decimal('vat_exempt');
            $table->decimal('vat_zero');
            $table->decimal('amount_due');
            $table->decimal('cash');
            $table->decimal('change_due');
            $table->integer('receipt_id');
            $table->timestamps();
        });

订单;

Schema::create('orders', function (Blueprint $table) {
            $table->increments('id');
            $table->string('item');
            $table->integer('qty');
            $table->decimal('price');
            $table->decimal('subtotal');
            $table->integer('receipt_id');
            $table->boolean('status');
            $table->timestamps();
        });

1 个答案:

答案 0 :(得分:1)

不知怎的,我设法解决了我的问题,我当然会分享我的代码。 :)

控制器;

$receipt_ids = DB::table('orders')
            ->where('status', 0)
            ->orderBy('receipt_id', 'asc')
            ->groupBy('receipt_id')
            ->get();

        $orders = DB::table('orders')
            ->where('status', 0)
            ->orderBy('receipt_id', 'asc')
            ->get();

        return view('kitchens.index', compact('receipt_ids','orders'));

叶片;

@extends('layouts.app')

<div class="panel panel-default">
    <div class="panel-body" style="overflow: scroll; height:85vh;">
        <div class="row">
            @forelse($receipt_ids as $receipt_id)
                <div class="col-md-4">
                    <div class="panel panel-default">
                        <div class="panel-heading text-center">
                            {{$receipt_id->receipt_id}}
                        </div>

                        <div class="panel-body">
                            <table class="table table-bordered table-responsive">
                                <thead>
                                    <th>Name</th>
                                    <th>Quantity</th>
                                </thead>

                                <tbody>
                                @foreach($orders as $order)
                                    @if($receipt_id->receipt_id == $order->receipt_id)
                                        <tr>
                                            <td>{{$order->item}}</td>
                                            <td>{{$order->qty}}</td>
                                        </tr>
                                    @endif
                                @endforeach
                                </tbody>
                            </table>
                        </div>

                        <div class="panel-footer clearfix">
                            <button type="submit" class="btn btn-success pull-right" style="margin-right: 10px;">
                                <i class="fa fa-check-circle" aria-hidden="true"></i> Served
                            </button>
                        </div>
                    </div>
                </div>
            @empty

            @endforelse
        </div>
    </div>
</div>