public function index()
{
$data = DB::table('orders')->select('orders.*','user.name as uname','orderStatus.name as statusName')
->join('user','user.id','=','.orders.uid')
->join('orderstatus','orderstatus.id','orders.status')->get();
$newArr = array();
foreach ($data as $k=>$v){
$newArr[$v->order_code] = $v; //将订单号放进下标里,如果有重复的可以很巧妙的进行重写
}
return view('admin.order.index')->with('data',$newArr);
}
//查看详情
public function list(Request $request)
{
//获取订单号
$code = $request->input('code');
$data = \DB::table('orders')->select('orders.*','goods.title','goods.img')->join('goods','goods.id','=','orders.goods_id')->where('order_code',$code)->get();
return view('admin.order.list')->with('data',$data);
}
public function addr(Request $request)
{
$aid = $_GET['aid'];
$data = \DB::table('address')->where('addr_id','=',$aid)->get();
return view('admin.order.addr')->with('data',$data);
}
涉及到多表操作,点击订单号跳转订单商品信息,同时还有收货人信息链接。
商品信息因为涉及到总价和总数,用到php+=操作
<table border="1">
<tr>
<th>商品</th>
<th>图片</th>
<th>数量</th>
<th>价格</th>
<th>小计</th>
</tr>
<?php
$money = 0;
$num = 0;
?>
@foreach($data as $v)
<tr>
<td>{{$v->title}}</td>
<td><img width="200" src="/uploads/{{$v->img}}" alt=""></td>
<td>{{$v->num}}</td>
<td>{{$v->price}}</td>
<td>{{$v->num*$v->price}}</td>
</tr>
<?php
$num += $v->num;
$money += $v->num*$v->price;
?>
@endforeach
<tr>
<td>合计</td>
<td>总数</td>
<td>{{$num}}</td>
<td>总价</td>
<td>{{$money}}</td>
</tr>
</table>
这里是订单首页
@extends('admin.public.admin')
@section('main')
<table border="1">
<tr>
<th>订单号</th>
<th>用户名</th>
<th>收货人信息</th>
<th>是否支付</th>
<th>状态</th>
<th>下单时间</th>
<th>操作</th>
</tr>
@foreach($data as $v)
<tr>
<td><a href="/admin/orders/list?code={{$v->order_code}}">{{$v->order_code}}</a></td>
<td>{{$v->uname}}</td>
<td><a href="/admin/orders/addr?aid={{$v->addr_id}}">链接</a></td>
@if($v->pay==0)
<td>未支付</td>
@else
<td>已支付</td>
@endif
<td>{{$v->statusName}}</td>
<td>{{date('Y-m-d H:i:s',$v->time)}}</td>
@if($v->status==6)
<td><a href="javascript:;">修改状态</a></td>
@else
<td><a href="/admin/orders/editStatus?sid={{$v->sid}}&code={{$v->order_code}}">修改状态</a></td>
@endif
</tr>
@endforeach
</table>
@endsection
再加一个修改状态,已完成的时候不能修改,用了一个路由,所以访问类型any
//修改订单状态
Route::any(‘orders/editStatus’,‘OrdersController@editStatus’);
public function editStatus(Request $request){
if($_POST){
$sid = $request->input('sid');
$code = $request->input('code');
$sql = "update orders set status=$sid where order_code='$code'";
$res = \DB::update($sql);
if($res){
return redirect('/admin/orders');
}else{
return back();
}
}else{
$data = \DB::table('orderstatus')->get();
return view('admin.order.editStatus')->with('data',$data);
}
}
跳转
<form action="/admin/orders/editStatus" method="post">
@csrf
<table border="1">
<tr>
<th>订单号</th>
<td><input type="text" value="{{$_GET['code']}}" name="code"></td>
</tr>
<tr>
<th>选择状态</th>
<td>
<select name="sid" id="">
@foreach($data as $v)
@if($v->id==$_GET['sid'])
<option selected value="{{$v->id}}">{{$v->name}}</option>
@else
<option value="{{$v->id}}">{{$v->name}}</option>
@endif
@endforeach
</select>
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="提交"></td>
</tr>
</table>
</form>