如内表结构和展示页面,在 Laravel 项目中怎么组织代码比较好?

问题:

如下表结构和展示页面,目前项目代码在最后面,都写在控制器里面了,感觉不太好

请问用联表操作,在laravel项目中怎么组织代码比较好


表结构如下:

areas 地区表

  • area_id 地区ID
  • area_name 地区名

users 用户表

  • user_id 用户ID
  • user_name 用户名
  • area_id 地区ID

orders 订单表

  • order_id 订单ID
  • order_sn 订单编号
  • order_date 下单日期
  • user_id 用户ID

order_product 订单详情表

  • order_id 订单ID
  • product_id 产品ID
  • quantity 下单数量
  • unit_price 单价

products 产品表

  • product_id 产品ID
  • product_name 产品编号
  • product_name 产品名称

查询展示如下数据:

订单列表页面:

下单日期选择控件 (选择时间范围:2017-05-01 -- 2017-06-01 显示这段日期内的订单列表,默认不限时间)
地区选择控件 (地区多选,选择北京和上海后,显示所选地区的用户的订单列表,默认不限地区)

订单编号 下单日期 订单产品数量 订单金额 下单用户 操作
ORDER0001 2017-11-06 12 1285.36 spring 查看详情
ORDER0002 2017-11-12 23 2198.65 summer 查看详情
ORDER0003 2017-11-18 6 618.15 autumn 查看详情
ORDER0004 2017-11-26 18 1838.25 winter 查看详情

某订单详情页面:

产品编号 数量 单价 总价
PRODUCT001 3 15.20 45.60
PRODUCT002 2 10.00 20.00
PRODUCT003 10 6.50 65.00

目前项目代码:

订单列表-> 控制器方法:

Order::from('orders AS O')
->leftJoin('order_product AS OP', 'OP.order_id', '=', 'O.order_id')
->leftJoin('users AS U', 'U.user_id', '=', 'O.user_id')
->when($dateStart && $dateEnd, function ($query) use ($dateStart, $dateEnd) {

    return $query
           ->where('O.order_date', '>=', $dateStart)
           ->where('O.order_date', '<=', $dateEnd);
})
->when($areaIdList, function ($query) use ($areaIdList) {

    return $query
           ->leftJoin('areas AS A', 'A.area_id', '=', 'U.area_id')
           ->whereIn('A.area_id', $areaIdList);
})
->select([
  'O.order_sn',
  'O.order_date',
  DB::raw('SUM(OP.quantity) AS sum_quantity'),
  DB::raw('(SUM(OP.quantity) * OP.unit_price) AS total_price'),
  'U.user_name',
])
->groupBy([
  'O.order_id',
  'O.order_date',
  'U.user_id',
])
->orderBy('O.order_date', 'DESC')
->orderBy('O.order_id', 'ASC')
->paginate($perpage, ['*'], 'pageNum', $pageNum);
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!